about summary refs log tree commit diff
README(7) FreeBSD Miscellaneous Information Manual README(7)

IRC client

catgirl(1) is a TLS-only terminal IRC client.

  • Tab complete: most recently seen or mentioned nicks are completed first. Commas are inserted between multple nicks.
  • Prompt: the prompt clearly shows whether input will be interpreted as a command or sent as a message.
  • Split scroll: keeps the latest messages in view while scrolling.
  • URL detection: recent URLs from a particular user or matching a substring can be opened or copied.
  • Nick coloring: color generation based on usernames remains stable across nick changes. Mentions of users in messages are colored.
  • Topic diffing: the modified portion of a channel topic change is highlighted.
  • Ignore: visibility of filtered messages can be toggled.

  • Dynamic configuration: all configuration happens in a simple text file or on the command line.
  • Multi-network: a terminal multiplexer such as screen(1) or tmux(1) (or just your regular terminal emulator tabs) can be used to connect catgirl to multiple networks.
  • Reconnection: when the connection to the server is lost, catgirl exits. It can be run in a loop or connected to a bouncer, such as pounce.
  • CTCP: apart from ACTION, this protocol is useless at best and enables abuse at worst.
  • Protocol coverage: IRCv3 extensions are implemented only where they contribute to the intended user experience.
  • Cleartext IRC: TLS is now ubiquitous and certificates are easy to obtain.

catgirl requires ncurses and libtls, provided by either LibreTLS (for OpenSSL) or by LibreSSL. catgirl and libtls may be packaged for your system. Check the Repology pages for catgirl and libretls.

catgirl targets FreeBSD, OpenBSD, macOS and Linux. On OpenBSD, pledge(2) is used to limit system operations, and with catgirl -R, unveil(2) is used to limit filesystem access. On BSD systems, configure with --mandir=/usr/local/man.

make all
sudo make install

If 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. Set PKG_CONFIG_PATH for ./configure to 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. Install it as follows:

make scripts/sandman
sudo make install-sandman

global state and declarations
startup and event loop
IRC connection and parsing
curses interface
IRC message handling
input command handling
line wrapping
line editing
tab complete
URL detection
message filtering
chat logging
configuration parsing
XDG base directories

example tmux(1) configuration for multiple networks and automatic reconnects
sleep/wake wrapper for macOS
notify-send(1) in AppleScript
name prompt wrapper for chroot
man(1) implementation for chroot
sshd(8) configuration for public chroot

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

Monetary contributions can be donated via Liberapay.


IRC bouncer: pounce

June Bug, IRC Suite, https://text.causal.agency/010-irc-suite.txt, June 19, 2020.

February 8, 2021 Causal Agency