4.6 KiB
Toxygen
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)
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
- Name lookups (toxme.io support)
- Save file encryption
- Profile import and export
- Faux offline messaging
- Faux offline file transfers
- Inline images
- Message splitting
- Proxy support - runs over tor
- Avatars
- Multiprofile
- Multilingual
- Sound notifications
- Contact aliases
- Contact blocking
- Typing notifications
- Changing nospam
- File resuming
- Read receipts
- uses gevent
Screenshots
Windows was working but is not currently being tested. AV was working but is not currently being tested: we're unsure of handling 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.
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 thirdparty/qweechat
backported to
PyQt5 and integrated into toxygen. Follow the normal instructions for
adding a relay
to weechat
/relay add ipv4.ssl.weechat 9000
/relay start ipv4.ssl.weechat
or
/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 may be things that need installing by hand or decisions to be made on supported alternatives.
https://git.plastiras.org/emdee/toxygen_wrapper needs packaging on pypi as it is a dependency. Just download and install it from https://git.plastiras.org/emdee/toxygen_wrapper
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 only 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 so the project may break the underlying ctypes wrapper at any time; it's not possible to use Tox version numbers to tel what the API will be. In which case you'll have 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 problem is solved. Fork me!