| 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. | |