catgirl(7)

πŸ“¦
version 2.2a Β· 3 versions
, in debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

πŸ’– catgirl β€” the manual, but make it cute πŸ’–

okay bestie so this is catgirl(7), from the Miscellaneous Information Manual, and I'm literally about to give you the whole entire tour. sit down, hydrate, put your hair up. πŸŽ€


✨ NAME ✨

catgirl β€” IRC client πŸ‘‘


🌸 DESCRIPTION 🌸

catgirl(7) is a terminal IRC client. that's it. that's the whole vibe. a whole IRC client, in your terminal, being gorgeous. πŸ’…

Screenshot: imagine, if you will, text on a screen, next to names in a selection of colours. πŸ¦‹ (yes that's the actual screenshot description and honestly? iconic. no notes.)

πŸ’« Notable Features πŸ’«

  • Tab complete β€” the nicks you saw or got mentioned most recently get completed first, and commas are inserted between multiple nicks. so you can spam a whole group chat's worth of names without typing them out. slay.
  • Prompt β€” the prompt literally tells you whether your input is gonna be read as a command or sent as a message. no guessing, no accidental commands, we love clarity in this house. ✨
  • Split scroll β€” keeps the latest messages in view while you're scrolling. so you never lose the plot mid-yap. πŸ“œ
  • URL detection β€” recent URLs from a particular user, or ones matching a substring, can be opened or copied. 🫢
  • Nick coloring β€” the color generation is based on usernames and stays stable across nick changes. and mentions of users inside messages get colored too. the consistency?? immaculate. 🌈
  • Topic diffing β€” the modified part of a channel topic change is highlighted. you see exactly what changed. πŸ‘‘
  • Ignore β€” you can toggle the visibility of filtered messages. filtered stays filtered until you say otherwise, bestie.
  • Security β€” on FreeBSD and OpenBSD, the restrict option enables tight sandboxing. And sandboxing is always used on OpenBSD. no opt-out, no cap. πŸ”’

πŸ’€ Non-features πŸ’€

like, on purpose. these are the things catgirl does NOT do and we are at peace with it.

  • Dynamic configuration β€” all configuration happens in a simple text file or on the command line. that's it. that's the whole system. πŸ“
  • Multi-network β€” use a terminal multiplexer like screen(1) or tmux(1) (or honestly just your regular terminal emulator tabs) to connect catgirl to multiple networks. multi-network, just not from inside catgirl itself.
  • Reconnection β€” when the connection to the server is lost, catgirl exits. periodt. you can run it in a loop or connect it to a bouncer, such as pounce: https://git.causal.agency/pounce
  • CTCP β€” apart from ACTION, this protocol is useless at best and enables abuse at worst. so. yeah. πŸ’€
  • Protocol coverage β€” IRCv3 extensions are implemented only where they contribute to the intended user experience. we're not implementing stuff for the sake of it.
  • Cleartext IRC β€” TLS is now ubiquitous and certificates are easy to obtain. so, no. πŸ”

🧚 INSTALLING 🧚

catgirl requires ncurses and libtls, provided by either LibreTLS: https://git.causal.agency/libretls/about (that's the one for OpenSSL) or by LibreSSL. it targets FreeBSD, OpenBSD, macOS and Linux.

catgirl and libtls may be packaged for your system, so check the Repology pages, bestie:

then it's the classic trio:

$ ./configure
$ make all
# make install

Packagers are encouraged to patch in their own text macros in input.c. 🫢

if you're installing libtls manually to /usr/local, for example, make sure /usr/local/lib appears in /etc/ld.so.conf or /etc/ld.so.conf.d/*, and be sure to run ldconfig(8) once the library is installed. also set PKG_CONFIG_PATH so ./configure can find it:

$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure

the sandman wrapper is provided for macOS to stop and start catgirl on system sleep and wake 😴✨ to enable it, configure with:

$ ./configure --enable-sandman

πŸŽ€ FILES πŸŽ€

here's the whole source lineup, one bullet each, no skips:

  • chat.h β€” global state and declarations
  • chat.c β€” startup and event loop
  • irc.c β€” IRC connection and parsing
  • ui.c β€” curses interface
  • window.c β€” window management
  • input.c β€” input handling
  • handle.c β€” IRC message handling
  • command.c β€” command handling
  • buffer.c β€” line wrapping
  • edit.c β€” line editing
  • complete.c β€” tab complete
  • url.c β€” URL detection
  • filter.c β€” message filtering
  • log.c β€” chat logging
  • config.c β€” configuration parsing
  • xdg.c β€” XDG base directories
  • sandman.m β€” sleep/wake wrapper for macOS

and the scripts folder, which is doing the absolute most (affectionate):

  • scripts/chat.tmux.conf β€” example tmux(1) configuration for multiple networks and automatic reconnects
  • scripts/notify-send.scpt β€” notify-send(1) in AppleScript
  • scripts/build-chroot.sh β€” chroot builder for OpenBSD and FreeBSD
  • scripts/chroot-prompt.sh β€” name prompt wrapper for chroot
  • scripts/chroot-man.sh β€” man(1) implementation for chroot
  • scripts/sshd_config β€” sshd(8) configuration for public chroot

🫢 CONTRIBUTING 🫢

the upstream URL of this project is ⟨https://git.causal.agency/catgirl⟩. contributions in any form can be sent to ⟨list+catgirl@causal.agency⟩. for sending patches by email, see ⟨https://git-send-email.io⟩. mailing list archives are available at ⟨https://causal.agency/list/catgirl.html⟩.

monetary contributions can be donated via Liberapay: https://liberapay.com/june/donate πŸ’Έ


🌈 SEE ALSO 🌈


okay that's the whole page, bestie. go forth, connect, be the main character of your own IRC network. πŸ’–

and this absolute gem was brought to you by Causal Agency, dated July 9, 2023 β€” it's catgirl(7), you're welcome, mwah πŸ’‹πŸŒΈ

πŸ“¦ where this page comes from