# Toxygen Toxygen is powerful cross-platform [Tox](https://tox.chat/) client for Tox and IRC/weechat written in pure Python3. ### [Install](/docs/install.md) - [Contribute](/docs/contributing.md) - [Plugins](/docs/plugins.md) - [Compile](/docs/compile.md) - [Contact](/docs/contact.md) ### Supported OS: Linux and Windows (only Linux is tested at the moment) ### Features: - 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 ### Screenshots *Toxygen on Ubuntu and Windows* ![Ubuntu](/docs/ubuntu.png) ![Windows](/docs/windows.png) 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 https://git.plastiras.org/emdee/toxygen_wrapper ## Forked This hard-forked from the dead https://github.com/toxygen-project/toxygen ```next_gen``` branch. See ToDo.md to the current ToDo list. ## IRC Weechat You can have a [weechat](https://github.com/weechat/qweechat) console so that you can have IRC and jabber in a window as well as Tox. There's a copy of qweechat in https://git.plastiras.org/emdee/qweechat 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](https://github.com/weechat/weechat) ``` /relay add weechat 9000 /relay start weechat ``` or ``` 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/ToxygenWeechat.md ## Install 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. https://git.plastiras.org/emdee/toxygen_wrapper needs installing as it is a dependency. Just download and install it from https://git.plastiras.org/emdee/toxygen_wrapper The same with https://git.plastiras.org/emdee/qweechat This is being ported to Qt6 using qtpy https://github.com/spyder-ide/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 ## Updates Up-to-date code is on https://git.plastiras.org/emdee/toxygen Tox works over Tor, and the c-toxcore library can leak DNS requests due to a 6-year old known security issue: https://github.com/TokTok/c-toxcore/issues/469 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: https://github.com/JFreegman/toxic/issues/622#issuecomment-1922116065 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 tox.py file in https://git.plastiras.org/emdee/toxygen_wrapper to fix it yourself. ## MultiDevice Work on this project is suspended until the [MultiDevice](https://git.plastiras.org/emdee/tox_profile/wiki/MultiDevice-Announcements-POC) problem is solved. Fork me!