Introduction
Introduction Statistics Contact Development Disclaimer Help
This is the first post in a series I'l be doing on my experiences
using Slack [1] at the office. My company recently decided to switch
to it for inter-office communication. I found several things that I
disliked about the interface to their official client so I went
searching for a better way to use their service. After very little
effort I found a few options that looked promising.
Slack offers an IRC gateway. This looked promising but since Slack
offers some different features than standard IRC, the special Slack
features were not made available. This was going to be a problem for
me. A little more searching uncovered wee-slack [2], a python plugin
for the popular weechat [3] command line IRC client. This happens to
be my IRC client of choice and looked very promising. Instead of
interfacing with the IRC gateway provided by Slack, it uses the Slack
API to provide a more feature rich experience while still providing
the familiar, IRC client interface and commands.
This first post will be about my experience configuring WeeChat to use
the wee-slack plugin. Since I use a Macbook Pro for work, this info
will likely be interesting but only directly useful to users of MacOS.
Some pieces may carry over if your environment under Linux/BSD is
similar.
The installation of wee-slack is fairly straight forward and quick;
similar to all other WeeChat plugins. You download the python script
from their git repository and place it in your ~/.weechat/python
directory. You then load it with /python load wee-slack.py from the
weechat prompt. Upon doing this I received a python stack trace
informing me that it was unable to load the 'websockets' module. A
quick look at their documentation and I see that I need the
websocket-client python module installed. Running
`pip install websocket-client` from the command line should have fixed
this. Unfortunately, the error persisted.
I have WeeChat installed using Homebrew [4] (a package manager for MacOS).
Homebrew compiles and installs packages from source. You can run
`brew edit $APPNAME`
to modify the homebrew version of a Makefile. This is where you enable
special options for build-time. In the case of WeeChat, this is used
to enable language specific plugin support. Python support is one of
these options. I had already enabled Python support, but it was still
not working.
Enter my user environment. I have an exceedingly complicated user
environment on my work laptop. This is out of necessity due to the
variance in the type of work I do from day to day. One of the special
caveats about my work environment is the use of pyenv [5] to manage
multiple versions of python on the same system in a sane(ish) manner.
After much searching and discussion on IRC with weechat developers I
found out that CMAKE does some magic to discover where you have python
installed. If you're using pyenv, this can confound things a little,
making it nearly impossible to figure out which version of python it
has chosen to use and subsequently difficult to find out which python
I needed install websocket-client in. The workaround is to statically
define the python binary that should be used by CMAKE. This is done
with the -DPYTHON_EXECUTABLE flag. Setting this to the global python
version, rebuilding weechat, and installing the websocket-client
module to the system python fixed the issue with running wee-slack.py
in weechat.
As mentioned earlier, wee-slack.py uses a Slack legacy API token to
interface with Slack. This is then loaded in to weechat using the
command and restarting your weechat client:
/set plugins.var.python.slack.slack_api_token [YOUR_SLACK_TOKEN]
Initial impressions were very positive. There are some great features
built in to the core plugin and the default behavior is configured
well out of the box.
Tomorrow, I will discuss the configuration in more detail and explore
some additional plugins that I've found useful for providing
additional functionality and extending the built-in capabilities of
wee-slack.py.
I hope you've enjoyed this post, see you tomorrow!
[1] Slack
[2] wee-slack.py
[3] WeeChat
[4] Homebrew
[5] Pyenv
You are viewing proxied material from sdf.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.