Background
Not too long ago, I was trying to catalogue the many different chat groups I’m idly sitting in and figure out if there was a simpler way than having several different apps or browser tabs open all the time for keeping up with them.
A long time ago when I was using lots of 1-to-1 chat tools like AIM, Google Talk, etc., I had setup bitlbee for personal use, as a way to get all my IM in one place. Along side this I also setup ZNC for some of the additional functionality it provided. Part of getting this setup was my first introduction to WeeChat to use as an IRC client.
When somebody in one of the Slacks I’m in made an offhand remark about how they’d managed to unify their messaging use a handful of Weechat plugins, my curiosity was piqued. I asked them some follow up questions and while ultimately their use case didn’t quite match up with mine, it nonetheless made me curious to try it out.
Current Setup
Currently I’m only really using Slack and IRC via Weechat. I spent an hour or two messing around trying to figure out to make an unmaintained weechat-discord thing work but gave up for now.
That leaves the following pieces in place:
- WeeChat with these additional plugins/scripts:
- Caddy as TLS-enabled proxy to WeeChat Relay
- Glowing Bear for when I’m not just using WeeChat in a terminal.
Step by Step
I suspect most of this could be figured out by somebody with sufficient time without too much difficulty but I tried to keep some notes mainly for myself in case I later decide to try and repeat some of this.
host
For now, I set this up on an old VPS I had bought for one project that ultimately fizzled out. Since I bought a year in advance it’s just been sitting idle for a while, and the overall requirements for this project are quite low. In the future if I’m still using this when the renewal period comes up, I’ll probably look for a new place to leave it running, sized appropriately to the actual system requirements.
This one happened to have been last rebuilt with Ubuntu 18.04 so I just went with that.
I’m going to skip over the details for initial setup for stuff like apt-get update && apt-get upgrade
, setting up a not-root user, setting up SSH, using keys for authentication, &c.
weechat
For WeeChat I then used their installation instructions, which pretty much covered things completely: https://weechat.org/download/debian/
For no particularly good reason I also added a couple other things to the list to be installed since I thought maybe there’d be cool plugins I would want to use.
sudo apt-get install weechat-curses weechat-plugins weechat-python weechat-lua weechat-dev weechat-doc weechat-scripts
There are in fact probably good reasons not to be as cavalier about installing things as I was, but here we are.
At this point I opened up WeeChat with weechat
and got things setup for connecting to freenode and hopped into a few channels I used to idle in.
wee slack
At this point I wanted to try out using Slack via wee-slack before committing to sinking a lot more time into this project. With that in mind, I started running through the Setup steps.
First I had to apt install python-pip
because I wanted to just use the step given verbatim: pip install websocket-client
.
At this point I downloaded and put into the appropriate folder the wee_slack.py
file and loaded up weechat
.
I went through registering with one of the old Slacks I had originally setup for a game of Diplomacy (while we enjoyed Backstabbr to play, we also enjoyed trash talking press outside of their interface) and voila it seemed to work right off.
At this point I registered a few more random Slack groups but also realized that for a few of the ones I’m in, I either lack sufficient access to add this integration, or I am reluctant to remove an existing one to make way for my own in a large but still unpaid Slack.
other scripts
With IRC and Slack going fine, I decided to also see if there were any immeidately useful scripts that I might want to load. For this I just looked at the big list of scripts and played with filters to see if anything jumped out as useful.
At that time I only ended up installing one, go.py
. A few days later though I was trying to get iTerm2 to let me ⌘-click on a link and it was being weird because of the way it was broken over multiple lines, so I went looking for something to assist on this.
For that, I found urlbar.py
which seems to have done the trick.
relay / glowing bear
With the initial stuff setup, I wanted to also try messing around with WeeChat’s Relay functionality. I’d read about using Glowing Bear and thought it’d be a fun thing to try out even if I ended up spending most of the time using a terminal anyway.
This was extremely simple to get setup actually, since at first I just followed the steps in Glowing Bear’s Getting Started:
/relay add weechat 9001
/set relay.network.password PASSWORD
I then messed around with my firewall to open up the port and tried it out using the one they’ve got hosted at https://www.glowing-bear.org.
caddy
At this point I noticed the warnings about doing all this stuff unencrypted and remembered that I had recently had a real easy time of setting up Caddy to proxy stuff while letting it deal with all the Let’s Encrypt stuff.
This is sort of out of order, since I’d actually already had Caddy setup, but the steps I followed were roughly:
- go to https://caddyserver.com/download and choose the right options and then run the resulting
curl https://whatever | bash
- make the required directories for
caddy
e.g./etc/caddy
,/var/www
,/etc/ssl/Caddy
and do the requiredchown
andchmod
to get permissions right. - Setup
caddy.service
to make it play nice withsystemd
- make sure firewall is setup right for 80 and 443
That had all been done before I was playing around with the WeeChat relay though, so I made some quick updates to the Caddyfile
based on the instructions in the glowing-bear
Wiki: Proxying WeeChat relay with a web server
Next Steps
At this point I started to lose steam and didn’t really get much further in terms of setting up new things.
There are a couple other things that I would like to mess around with at some point though.
- Mobile Client - WeeChat Android exists and seems to be pretty well liked but I haven’t tried setting it up yet.
- Push Notifications - One of the blogs I saw in figuring out what I might want to try mentioned setting up Notifications via Pushbullet. At some point I played with Pushbullet before for some SMS related goal so this seems like it shouldn’t be impossible for me to figure out.
bitlbee
again - it’ll be for a pretty much entirely new set of services but there are others that seem like it might be convenient to leave connected still, and if the bitlbee-discord plugin works enough that’d be great for me.
Why bother?
What did I get out of all this? At this point, not very much. I’ve still got Slack and Discord and a couple browser tabs with other communication tools open all the time on my computer, and who knows what else going on in my mobile.
I suppose it was an amusing learning experience and chance to play around with stuff I haven’t used before.
I’m still finding it enjoyable to use over the “native apps” where I can, but in some cases I’m not ever going to be able to stop using the official clients because the wee-slack integration isn’t something the Slack admins will allow me to use in some cases.