---
name: "catgirl"
section: "7"
platform: "linux"
package: "catgirl"
version: "2.2a-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/catgirl/7"
---

# catgirl(7)

IRC client

## NAME

**catgirl** – IRC client

## DESCRIPTION

[catgirl(7)](/catgirl/7.md) 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)](/screen/1.md) or [tmux(1)](/tmux/1.md) (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)](/ldconfig/8.md) 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)](/tmux/1.md) configuration for multiple networks and automatic reconnects

- *scripts/notify-send.scpt*

  [notify-send(1)](/notify-send/1.md) 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)](/man/1.md) implementation for chroot

- *scripts/sshd\_config*

  [sshd(8)](/sshd/8.md) 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

[catgirl(1)](/catgirl/1.md), 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.
