toxygen/ 8c9d53903f
Some checks failed
CI / Python ${{ matrix.python-version }} (3.10) (push) Has been cancelled
CI / Python ${{ matrix.python-version }} (3.7) (push) Has been cancelled
CI / Python ${{ matrix.python-version }} (3.8) (push) Has been cancelled
CI / Python ${{ matrix.python-version }} (3.9) (push) Has been cancelled
2024-03-08 04:01:31 +00:00

4.9 KiB


Toxygen is powerful cross-platform Tox client for Tox and IRC/weechat written in pure Python3.

Install - Contribute - Plugins - Compile - Contact

Supported OS: Linux and Windows (only Linux is tested at the moment)


  • PyQt5, PyQt6, and maybe PySide2, PySide6 via qtpy
  • IRC via weechat /relay
  • NGC groups
  • 1v1 messages
  • File transfers
  • Audio calls
  • Video calls
  • Group chats
  • Plugins support
  • Desktop sharing
  • Chat history
  • Emoticons
  • Stickers
  • Screenshots
  • Save file encryption
  • Profile import and export
  • Faux offline messaging
  • Faux offline file transfers
  • Inline images
  • Message splitting
  • Proxy support - runs over tor, without DNS leaks
  • Avatars
  • Multiprofile
  • Multilingual
  • Sound notifications
  • Contact aliases
  • Contact blocking
  • Typing notifications
  • Changing nospam
  • File resuming
  • Read receipts
  • uses gevent


Toxygen on Ubuntu and Windows Ubuntu Windows

Windows was working but is not currently being tested. AV is working but the video is garbled: we're unsure of naming the AV devices from the commandline. We need to get a working echobot that supports SOCKS5; we were working on one in


This hard-forked from the dead next_gen branch.

See to the current ToDo list.

IRC Weechat

You can have a weechat console so that you can have IRC and jabber in a window as well as Tox. There's a copy of qweechat in that you must install first, which was backported to PyQt5 now to qtpy (PyQt5 PyQt6 and PySide2 and PySide6) and integrated into toxygen. Follow the normal instructions for adding a relay to weechat

/relay add weechat 9000
/relay start weechat


weechat -r '/relay add weechat 9000;/relay start weechat'

and use the Plugins -> Weechat Console to start weechat under Toxygen. Then use the File/Connect menu item of the Console to connect to weechat.

Weechat has a Jabber plugin to enable XMPP:

/python load jabber.el
/help jabber

so you can have Tox, IRC and XMPP in the same application! See docs/


To install read the requirements.txt and look at the comments; there are things that need installing by hand or decisions to be made on supported alternatives. needs installing as it is a dependency. Just download and install it from The same with

This is being ported to Qt6 using qtpy It now runs on PyQt5 and PyQt6, and may run on PySide2 and PySide6 - YMMV. You will be able to choose between them by setting the environment variable QT_API to one of: pyqt5 pyqt6 pyside2 pyside6. It's currently tested mainly on PyQt5.

To install it, look in the Makefile for the install target and type

make install

You should set the PIP_EXE_MSYS and PYTHON_EXE_MSYS variables and it does

	${PIP_EXE_MSYS} --python ${PYTHON_EXE_MSYS} install \
		--no-deps \
		--target ${PREFIX}/lib/python${PYTHON_MINOR}/site-packages/ \
		--upgrade .

and installs into PREFIX which is usually /usr/local


Up-to-date code is on

Tox works over Tor, and the c-toxcore library can leak DNS requests due to a 6-year old known security issue: but toxygen looksup addresses before calling c-toxcore. This also allows us to use onion addresses in the DHTnodes.json file. Still for anonymous communication we recommend having a TCP and UDP firewall in place.

Although Tox works with multi-user group chat, there are no checks against impersonation of a screen nickname, so you may not be chatting with the person you think. For the Toxic client, the (closed) issue is: Solving this might best be done with a solution to MultiDevice q.v.

The Tox project does not follow semantic versioning of its main structures in C so the project may break the underlying ctypes wrapper at any time; it's not possible to use Tox version numbers to tell what the API will be. The last git version this code was tested with is ``1623e3ee5c3a5837a92f959f289fcef18bfa9c959``` of Feb 12 10:06:37 2024. In which case you may need to go into the file in to fix it yourself.


Work on this project is suspended until the MultiDevice problem is solved. Fork me!