NAME
catgirl – IRC client
DESCRIPTION
catgirl(7) is a terminal IRC client.
Screenshot: imagine, if you will, text on a screen, next to names in a selection of colours.
Notable Features
-
Tab complete: most recently seen or mentioned nicks are completed first. Commas are inserted between multiple 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.
-
Security: on FreeBSD and OpenBSD, the restrict option enables tight sandboxing. Sandboxing is always used on OpenBSD.
Non-features
-
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: https://git.causal.agency/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.
INSTALLING
catgirl requires ncurses and libtls, provided by either LibreTLS: https://git.causal.agency/libretls/about (for OpenSSL) or by LibreSSL. It targets FreeBSD, OpenBSD, macOS and Linux. catgirl and libtls may be packaged for your system. Check the Repology pages for catgirl: https://repology.org/project/catgirl/versions and libretls: https://repology.org/project/libretls/versions.
$ ./configure $ make all # make install
Packagers are encouraged to patch in their own text macros in input.c.
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. To enable it, configure with:
$ ./configure --enable-sandman
FILES
- 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
- 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 ⟨[email protected]⟩. 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
catgirl(1), sandman(1)
IRC bouncer: pounce: https://git.causal.agency/pounce June McEnroe, IRC Suite, June 19, 2020, https://text.causal.agency/010-irc-suite.txt.