Weechat & Matrix Encryption Guide
Posted on Mar 7 2019
There’s a new-fangled Python WeeChat plugin that supports end-to-end encryption. This guide will walk you through what is currently a semi-annoying setup, as the entire project is still under heavy development.
- Setup dependencies
git clone https://git.faceless.lyte.dev/lytedev/weechat-matrix-encryption-guide.git /tmp/wmeg && $EDITOR /tmp/wmeg/easy-script.bash && /tmp/wmeg/easy-script.bash
- Configure as needed
We need to establish which version of Python your WeeChat is using. You can find
this out in WeeChat with
/python version. In my case, my
python binary is
python -V) while my WeeChat Python version is 2.7.15.
There are a number of dependencies we can go ahead and start grabbing. The main
repository lists a number of them in the
README, so we will grab those. We
also need to install
libolm however you would do that for your environment.
sudo pip2 install pyOpenSSL typing webcolors future atomicwrites attrs logbook pygments pacaur -S libolm # or for Ubuntu (and maybe Debian?): sudo apt-get install libolm-dev
Notice that we left out the
matrix-nio dependency. It’s not in
PyPi, so we can’t just
pip2 install matrix-nio (yet!) and PyPi’s
is something probably unrelated, so we’ll need to install it manually.
Let’s go ahead and clone down the repository and get ready to do some stuff:
git clone https://github.com/poljar/matrix-nio.git cd matrix-nio
If you’re looking around, documentation seems a bit sparse on how to do this, but it has a mostly normal manual Python package installation workflow.
First, lets grab all the dependencies specific to the
sudo pip2 install -r ./rtd-requirements.txt
And now we expect to be able to install it:
sudo python2 ./setup.py install
But you’ll see the install script pauses for a second before we get an odd error:
Processing dependencies for matrix-nio==0.1 Searching for python-olm@ git+https://github.com/poljar/python-olm.git@master#egg=python-olm-0 Reading https://pypi.org/simple/python-olm/ Couldn't find index page for 'python-olm' (maybe misspelled?) Scanning index of all packages (this may take a while) Reading https://pypi.org/simple/ No local packages or working download links found for python-olm@ git+https://github.com/poljar/python-olm.git@master#egg=python-olm-0 error: Could not find suitable distribution for Requirement.parse('python-olm@ git+https://github.com/poljar/python-olm.git@master#egg=python-olm-0')
Out of the box, Python packages’
setup.py scripts seem to not know how to
handle packages whose URL specifies to grab it via VCS, such as
git+. So we’ll
just help it out and grab it ourselves (instead of tinkering with anybody’s
sudo pip2 install -e git+https://github.com/poljar/python-olm.git@master#egg=python-olm-0
Now we should have everything we need to install the
sudo python2 ./setup.py install
Weechat Plugin Installation
Once we’ve done that, we should have all the dependencies for
so let’s go ahead and clone that and install it!
git clone https://github.com/poljar/weechat-matrix.git cd weechat-matrix make install
The rest is up to you! You’ll need to configure your Matrix servers within WeeChat and then verify keys. Verifying keys isn’t a particularly clean process at the moment, but I expect it shall improve. For now, I followed this basic process in WeeChat:
- Open a split at your status window so you can see it and the encrypted channel
at the same time. (
- Open the encrypted channel whose keys you need to verify.
- List the unverified keys in the current channel. (
/olm info unverified)
- For each user with keys listed there, verify all of their listed keys via your
preferred method. Alternatively, you can do this on a per-device basis. See
/help olmfor details.
- Once all keys are verified, tell WeeChat you have done so. (
/olm verify @username:homeserver.example.com)
- Repeat until there are no unverified keys remaining in the current channel and repeat for each channel. Whew!