25 march 2023 | |
catdeer haven - Weechat, but with a sane config | |
I really like weechat. Out of all the common terminal IRC clients, | |
it's the most intuitive and easy to use if you've set it up right. | |
I'd argue it even holds its own against common GUI clients, like | |
Hexchat. | |
However, when only considering default configuration, weechat feels | |
clunky at best, especially when you join multiple servers. The | |
buflist turns into a disorganized mess, the, by default, server | |
buffers are a pain to scroll through, and even though it has such a | |
modern-looking UI, mouse support is disabled by default. | |
What's worse is that weechat's config is questionable at best. When | |
launching weechat, its entire default config is written to the | |
user's config dir. All of it, spread out over multiple files. There | |
are so many options that finding the right option for what you want | |
to do becomes so difficult, asking chatgpt and/or weechat veterans | |
often times the much more preferable option, over digging through | |
weechat's pages upon pages of documentation. | |
I've used weechat many times over the years, and I know how useable | |
it can be, but with its cryptic configs, I'm never able to remember | |
the most essential lines in need of change. This has lead me to | |
again and again use irssi over weechat, if only because I can't | |
remember that weechat's shortcut to enter the "bare" mode to | |
comfortably click/copy links or is `Alt + l` (lowercase L). | |
# Options in need of change | |
To not only make it easier for myself, but for others too, to setup | |
weechat once again without having to lug around a tar of config | |
files just for your irc client, I'll summarize the options that I | |
find most important here. | |
`/set weechat.look.mouse on` | |
In my opinion, one of the most baffling default options. Mouse | |
support, even when enabled, only adds features. Being able to just | |
click on a channel you want to switch to, like you're used to from | |
discord or slack, is a feature I can't live without. | |
`/set irc.look.server_buffer independent` | |
The default of having server buffers merged looks to me like some | |
sort of legacy feature, since irssi has the same behaviour. | |
However, not only does my brain work better with having a seperate | |
buffer for each server, it's also very much necessary for the next | |
two options: | |
`/set irc.look.new_channel_position near_server` | |
`/set irc.look.new_pv_position near_server` | |
These two options are very important to me: If you join a new | |
channel, or a new PM buffer is opened, it'll be put under the | |
server buffer it belongs to. Suddenly, by changing only 3 options, | |
2 of them being basically the same, the weechat buflist mirrors the | |
tree-like list in, for example, hexchat, without installing any | |
sort of plugin. Weechat is even smart enough to keep channel | |
buffers above PM buffers! | |
# Options in less of a need of change | |
These options are far less necessary, in part even just purely | |
aesthetic, but I still like them very much. | |
`/set buflist.format.buffer | |
" ${indent}${format_nick_prefix}${color_hotlist}${format_name} "` | |
This option determines how the entries in the buflist are formated. | |
I've made 2 changes from the default here: | |
1. Remove the buffer number. I only use `Alt + Arrows` and the | |
mouse to switch channels, so having the numbers displayed is | |
distracting for me at best. | |
2. Add a space at the front and back. I have big screens, so I can | |
use some screen real-estate to make the buflist feel a little | |
less cramped. | |
`/set buflist.format.indent " ╰"` | |
Oooo, fancy unicode~ This option is used to indent channels and PMs | |
in the buflist. It's just two spaces by default. I've decided to | |
add this little rounded corner from unicode's box-drawing | |
characters to further solidify the "tree like list" feel of my | |
buflist. | |
`/set irc.server_default.ipv6 off` | |
This one is a little weird. I mostly use weechat in a screen | |
session on tilde.club, and while doing some first testing, | |
connecting to libera.chat produced some... weird results with this | |
set to on. Ident-check wouldn't work, libera would complain about | |
too many connections... This one magically fixed it, but I imagine | |
I'll have to remove that once ipv6 entirely replaces ipv4, which is | |
totally going to happen. | |
`/set irc.server_default.ssl on` | |
Once again one of these questionable defaults. Nowadays, coming | |
across an irc server without ssl/tls is the uncommon option, so | |
changing this default option just makes setting up a new server a | |
little bit easier. | |
`/set irc.server_default.msg_part ""` | |
`/set irc.server_default.msg_quit ""` | |
By default, these tell everyone that you're using weechat when | |
leaving. I like weechat, but not enough to rub it into everyone's | |
face, so I like to clear those. | |
# Listing all options that differ from default | |
`/fset d` | |
That's it. This little command was instrumental in writing this | |
blog post, and I have FlashCode from libera's #weechat channel to | |
thank for pointing it out to me. | |
# Copy / Raw / Bare Mode | |
I've mentioned it earlier, but I feel like writing a section just | |
for this. Weechat calls it bare-mode, and I keep remembering it as | |
raw-mode, making successful searches rather difficult. The keyboard | |
shortcut is `Alt + l` (lowercase L), and you use the same shortcut | |
to leave that mode. | |
# Adding Servers | |
I'm rather forgetful, and read-lazy, so instead of reading through | |
the help/remember a bunch of options, I add servers by first | |
proving as little information as possible, then open fset to scroll | |
through options I need to change: | |
`/server add libera libera.chat/6697` | |
`/fset server.libera` | |
For libera specifically, all I needed to do was slap my username | |
and password into the sasl config to get authenticated while | |
connecting, SSL was already enabled thanks to one of the options | |
from before. | |