From irssi to weechat
I started using IRC in 2003, around the same time I started using
linux. My IRC client of choice was xchat. I had a lot of fun
adapting an xmms plug-in for xchat that pastes currently playing
song to the current chatroom.
Then I switched to irssi. Oldest irssi logs I could find is from
2007. Around the time I was switching to Gentoo as my main desktop
system. I used irssi ever since. I had a few trivial plugins
installed: nickcolor.pl
and a few one-liners around ChanServ and NickServ integration.
A few weeks ago I noticed that nickcolor.pl plug-in does not quite
work for some channels. When I open a chat tab for the first time (since
irssi startup) where the discussion is already ongoing all the
nicks get the same color. I spent some time debugging nickcolor.pl
and I did not manage to get it fixed. I rely on the colors a lot: I
frequently mix nicks together if they don’t look distinct enough and
answer wrong people or misinterpret conversations.
Instead of spending more time with irssi I decided to look at the
console alternatives that implement nick coloring by default and are
more actively maintained. tiny and
weechat looked most promising.
tiny is written in rust, has a nice UI and has a bit too simplistic
yaml configuration for my needs. I also had an impression that
CertFP support was added in
master branch only and did not see a proper release yet.
weechat is written in C, has UI very close to irssi and (to my
surprise) has even smaller amount of required dependencies than irssi.
It’s configs are ini files with many-many options. weechat provides
excellent built-in support for searching through config options.
weechat also has a spell checking capability via aspell!
I was a bit worried about vulnerability count on weechats side, but
apparently irssi has very similar profile if we look at the types of
encountered bugs:
I settled on weechat.
weechat config
Here is my full configuration so far:
/server add libera irc.libera.chat/6697 -ssl -autoconnect
/set irc.server.libera.ssl on
/set irc.server.libera.ssl_verify on
/set irc.server.libera.ssl_cert %h/certs/libera.pem
/set irc.server.libera.sasl_mechanism external
/set irc.server.libera.nicks ...
/set irc.server.libera.username ...
/set irc.server.libera.realname ...
/set irc.server.libera.autojoin ...
/server add oftc irc.oftc.net/6697 -ssl -autoconnect
/set irc.server.oftc.ssl on
/set irc.server.oftc.ssl_verify on
/set irc.server.oftc.ssl_cert %h/certs/oftc.pem
/set irc.server.oftc.nicks ...
/set irc.server.oftc.username ...
/set irc.server.oftc.realname ...
/set irc.server.oftc.autojoin ...
# don't notify on joins/leaves
/set weechat.look.buffer_notify_default message
# spell checking
/set spell.check.enabled on
/set spell.check.real_time on
/set spell.check.default_dict "en,ru"
# don't merge server messages from different servers
/set irc.look.server_buffer independent
# don't trigger upgency properties on terminal to avoid focus change
/set trigger.trigger.beep.enabled off
# avoid "blue", too dark on my colorscheme
/set weechat.color.chat_nick_colors "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen"
# Filter most joins/quits/parts:
# https://blog.weechat.org/post/2008/10/25/Smart-IRC-join-part-quit-message-filter
/set irc.look.smart_filter on
/filter add irc_smart * irc_smart_filter *
/save
One special thing to note here is absence of
/set irc.server.oftc.sasl_mechanism external line if we compare OFTC
and Libera setups. Presence of external on OFTC causes connection
drops with message irc: client capability: SASL not supported; irc: disconnected from server.
Parting words
After 16 years of irssi usage I don’t feel much discomfort switching
to weechat. Most of the key bindings are the same. The UI has slightly
more details that irssi. It felt overwhelming at first. But once I
read the quickstart guide
and user guide
it became natural.
I have not yet ported any of my trivial plugins but it does not look complicated at a first glance.
Have fun!