aboutsummaryrefslogtreecommitdiff
README(7) FreeBSD Miscellaneous Information Manual README(7)

catgirl
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.
  • Indicators: the prompt clearly shows whether input will be interpreted as a command or sent as a message. An indicator appears when scrolled up in the chat history.
  • Nick coloring: color generation based on usernames remains stable across nick changes. Mentions of users in messages are colored.
  • URL detection: recent URLs from a particular user or matching a substring can be opened or copied.
  • 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.
  • Cleartext IRC: TLS is now ubiquitous and certificates are easy to obtain.

catgirl requires LibreSSL (-ltls) and ncurses (-lncursesw). It primarily targets FreeBSD and macOS, as well as Linux.
./configure
make all
sudo make install PREFIX=/usr/local

If your system installs LibreSSL in a non-standard path, set PKG_CONFIG_PATH for ./configure. For example,

PKG_CONFIG_PATH=/opt/libressl/lib/pkgconfig ./configure

If your system is incapable of providing LibreSSL, consider building it manually and installing to /usr/local, adding /usr/local/lib to /etc/ld.so.conf and running ldconfig(8) if needed. It may also be necessary to create /etc/ssl/cert.pem as a symbolic link to /etc/ssl/certs/ca-certificates.crt or similar path.

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

chat.h
global state and declarations
chat.c
startup and event loop
irc.c
IRC connection and parsing
ui.c
curses interface
handle.c
IRC message handling
command.c
input command handling
edit.c
line editing
complete.c
tab complete
url.c
URL detection
ignore.c
message filtering
log.c
chat logging
config.c
configuration parsing
xdg.c
XDG base directories

scripts/sandman.m
sleep/wake wrapper for macOS
scripts/notify-send.scpt
notify-send(1) in AppleScript
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

The upstream URL of this project is ⟨https://git.causal.agency/catgirl⟩. I'm happy to receive contributions in any form at <june@causal.agency>. For sending patches by email, see ⟨https://git-send-email.io⟩.

catgirl(1)

IRC bouncer: pounce

April 4, 2020 Causal Agency