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