SHELL
The shell used by /exec. The default is /bin/sh.
Irc client
catgirl [-Relqv]
[-C
copy]
[-H
hash]
[-I
highlight]
[-N
notify]
[-O
open]
[-S
bind]
[-T
[timestamp]]
[-a
plain]
[-c
cert]
[-h
host]
[-i
ignore]
[-j
join]
[-k
priv]
[-m
mode]
[-n
nick]
[-p
port]
[-r
real]
[-s
save]
[-t
trust]
[-u
user]
[-w
pass]
[config ...]
catgirl -o
[-S
bind]
[-h
host]
[-p
port]
[config ...]
catgirl -g
cert
The catgirl IRC client provides a curses interface for TLS-only Internet Relay Chat. The only required option is -h, the host name to connect to. See EXAMPLES for managing further configuration. Type /help in catgirl to view the list of COMMANDS and KEY BINDINGS.
Options can be loaded from files listed on the command line. Files are searched for in $XDG_CONFIG_DIRS/catgirl( usually ~/.config/catgirl) unless the path starts with ‘/’, ‘./’ or ‘../’. Files and flags listed later on the command line take precedence over those listed earlier.
Each option is placed on a line, and lines beginning with ‘#’ are ignored. The options are listed below following their corresponding flags.
-C util | copy = utilSet the utility used by /copy. Subsequent copy options append arguments to util. The URL to copy is provided to util on standard input. The default is the first available of pbcopy(1), wl-copy(1), xclip(1), xsel(1).
-H seed,bound | hash = seed,boundSet the initial seed of the nick and channel color hash function and the maximum IRC color value produced by the function. The default is 0,75. To use only colors from the 16-color terminal set, use 0,15. To disable nick and channel colors, use 0,0.
-I pattern | highlight = patternAdd a case-insensitive message highlight pattern, which may contain ‘*’, ‘?’ and ‘[]’ wildcards as in glob(7). The format of the pattern is as follows:
nick[!user@host [command [channel [message]]]]
The commands which can be matched are: INVITE, JOIN, NICK, NOTICE, PART, PRIVMSG, QUIT, SETNAME.
-N util | notify = utilSend notifications using a utility. Subsequent notify options append arguments to util. The window name and message are provided to util as two additional arguments, appropriate for notify-send(1).
-O util | open = utilSet the utility used by /open. Subsequent open options append arguments to util. The URL to open is provided to util as an argument. The default is the first available of open(1), xdg-open(1).
-R | restrictDisable the /copy, /exec and /open commands, the notify option, and viewing this manual with /help.
-S host | bind = hostBind to source address host when connecting to the server. To connect from any address over IPv4 only, use 0.0.0.0. To connect from any address over IPv6 only, use ::.
-T[format] | timestamp [= format]Show timestamps by default, in the specified strftime(3) format. The format string may contain raw IRC formatting codes. The default format is "%X".
-a user:pass | sasl-plain = user:passAuthenticate as user with pass using SASL PLAIN. Leave pass blank to prompt for the password.
-c path | cert = pathLoad the TLS client certificate from path. The path is searched for in the same manner as configuration files. If the private key is in a separate file, it is loaded with priv. With sasl-external, authenticate using SASL EXTERNAL. Certificates can be generated with -g.
-e | sasl-externalAuthenticate using SASL EXTERNAL, also known as CertFP. The TLS client certificate is loaded with cert. See Configuring CertFP.
-g path
Generate a TLS client certificate using openssl(1) and write it to path.
-h host | host = hostConnect to host.
-i pattern | ignore = patternAdd a case-insensitive message ignore pattern, which may contain ‘*’, ‘?’ and ‘[]’ wildcards as in glob(7). The format of the pattern is as follows:
nick[!user@host [command [channel [message]]]]
The commands which can be matched are: INVITE, JOIN, NICK, NOTICE, PART, PRIVMSG, QUIT, SETNAME.
-j channels [keys] | join = channels [keys]Join the comma-separated list of channels with the optional comma-separated list of channel keys.
-k path | priv = privLoad the TLS client private key from path. The path is searched for in the same manner as configuration files.
-l | logLog chat events to files in paths $XDG_DATA_HOME/catgirl/log/network/channel/YYYY-MM-DD.log.
-m mode | mode = modeSet the user mode.
-n nick [...] | nick = nick [...]Set nickname to nick. The default nickname is the value of the environment variable USER. Additional space-separated nicks will be tried in order if the first is not available, and all nicks are treated as highlight words.
-o
Print the server certificate chain to standard output in PEM format and exit.
-p port | port = portConnect to port. The default port is 6697.
-q | quietRaise the default message visibility threshold for new windows, hiding general events (joins, quits, etc.).
-r real | real = realSet realname to real. The default realname is the same as the nickname.
-s name | save = nameSave and load the contents of windows from name in $XDG_DATA_DIRS/catgirl, or an absolute or relative path if name starts with ‘/’, ‘./’, or ‘../’.
-t path | trust = pathTrust the self-signed certificate loaded from path and disable server name verification. The path is searched for in the same manner as configuration files. See Connecting to Servers with Self-signed Certificates.
-u user | user = userSet username to user. The default username is the same as the nickname.
-v | debugLog raw IRC messages to the <debug> window as well as standard error if it is not a terminal.
-w pass | pass = passLog in with the server password pass. Leave pass blank to prompt for the password.
Generate a new TLS client certificate:
$ catgirl -g ~/.config/catgirl/example.pem
Connect to the server using the certificate:
cert = example.pem # or: $ catgirl -c example.pem
Identify with services or use sasl-plain, then add the certificate fingerprint to your account:
/ns CERT ADD
Enable SASL EXTERNAL to require successful authentication when connecting (not possible on all networks):
cert = example.pem sasl-external # or: $ catgirl -e -c example.pem
Connect to the server and write its certificate to a file:
$ catgirl -o -h irc.example.org > ~/.config/catgirl/example.pem
Configure catgirl to trust the certificate:
trust = example.pem # or: $ catgirl -t example.pem
The catgirl interface is split into three areas.
The top line of the terminal shows window statuses. Only the currently active window and windows with activity are listed. The status line for a window might look like this:
1+ #ascii.town +3 ~7 @
The number on the left is the window number. Following it may be one of ‘-’, ‘+’, ‘++’, as well as ‘=’. These indicate the message visibility threshold and mute status of the window.
On the right side, the number following ‘+’ indicates the number of unread messages. The number following ‘~’ indicates how many lines are below the scroll position. An ‘@’ indicates that there is unsent input in the window's Input Line.
catgirl will also set the terminal title, if possible, to the name of the network and active window, followed by the unread count for that window, and the unread count for all other windows in parentheses.
The chat area shows messages and events. Regular messages are shown with the nick between ‘<>’ angle brackets. Actions are shown with the nick preceded by ‘*’. Notices are shown with the nick between ‘-’ hyphens.
Blank lines are inserted into the chat as unread markers.
While scrolling, the most recent 5 lines of chat are kept visible below a marker line.
The bottom line of the terminal is where messages and commands are entered. When entering a message, action or notice, your nick appears on the left, as it would in the Chat Area. When entering a command, no nick is shown.
Formatting codes are shown in the input line as reverse-video uppercase letters. These will not appear in the sent message.
Input that is too long to send as a single message will have a red background starting at the point where it will be split into a second message.
Any unique prefix can be used to abbreviate a command. For example, /join can be typed /j.
/away [message]Set or clear your away status.
/cs commandSend a command to ChanServ.
/invite nickInvite a user to the channel.
/join [channel [key]]Join the named channel, the current channel, or the channel you've been invited to.
/list [channel]List channels.
/me [action]Send an action message.
/msg nick messageSend a private message.
/namesList users in the channel.
/nick nickChange nicknames.
/notice messageSend a notice.
/ns commandSend a command to NickServ.
/opsList channel operators.
/part [message]Leave the channel.
/query nickStart a private conversation.
/quit [message]Quit IRC.
/quote commandSend a raw IRC command. Use M-- to show unknown replies.
/say messageSend a regular message.
/setname nameUpdate realname if supported by the server.
/topic [topic]Show or set the topic of the channel. Press Tab twice to copy the current topic.
/whois [nick]Query information about a user or yourself.
/whowas nickQuery past information about a user.
/close [name | num]Close the named, numbered or current window.
/copy [nick | substring]Copy the most recent URL from nick or matching substring.
/debugToggle logging in the <debug> window.
/exec commandRun command with SHELL and interpret its output as input to the current window, including as commands.
/helpView this manual. Type q to return to catgirl.
/help topicList the server help for a topic. Try /help index for a list of topics.
/highlight [pattern]List message highlight patterns or temporarily add a pattern. To permanently add a pattern, use the highlight option.
/ignore [pattern]List message ignore patterns or temporarily add a pattern. To permanently add a pattern, use the ignore option.
/move [name] numMove the named or current window to number.
/o ...Alias of /open.
/open [count]Open each of count most recent URLs.
/open nick | substringOpen the most recent URL from nick or matching substring.
/unhighlight patternTemporarily remove a message highlight pattern.
/unignore patternTemporarily remove a message ignore pattern.
/windowList all windows.
/window name | substringSwitch to window by name or matching substring.
/window num | /numSwitch to window by number.
/ban [mask ...]List or ban masks from the channel.
/deop [nick ...]Revoke channel operator status from users or yourself.
/devoice [nick ...]Revoke voice from users or yourself in the channel.
/except [mask ...]List or add masks to the channel ban exception list.
/invex [mask ...]List or add masks to the channel invite list.
/kick nick [message]Kick a user from the channel.
/mode [modes] [param ...]Show or set channel modes. In the <network> window, show or set user modes.
/op [nick ...]Grant users or yourself channel operator status.
/unban mask ...Unban masks from the channel.
/unexcept mask ...Remove masks from the channel ban exception list.
/uninvex mask ...Remove masks from the channel invite list.
/voice [nick ...]Grant users or yourself voice in the channel.
The catgirl interface provides emacs(1)-like line editing as well as keys for IRC formatting. The prefixes C- and M- represent the control and meta (alt) modifiers, respectively.
C-aMove to beginning of line.
C-bMove left.
C-dDelete next character.
C-eMove to end of line.
C-fMove right.
C-kDelete to end of line.
C-tTranspose characters.
C-uDelete to beginning of line.
C-wDelete previous word.
C-xExpand a text macro beginning with ‘\’.
C-yPaste previously deleted text.
M-EnterInsert a newline without sending a command.
M-bMove to previous word.
M-dDelete next word.
M-fMove to next word.
M-qCollapse all whitespace.
TabComplete nick, channel, command or macro.
Arrow and navigation keys also work as expected.
C-lRedraw the UI.
C-nSwitch to next window.
C-pSwitch to previous window.
C-rScroll to previous line matching input.
C-sScroll to next line matching input.
C-vScroll down a page.
Raise message visibility threshold, hiding ignored messages, general events (joins, quits, etc.), or non-highlighted messages.
Lower message visibility threshold, showing ignored messages and unknown replies.
Toggle mute. Muted windows do not appear in the status line unless you are mentioned.
Switch to previously selected window.
Scroll to top.
Scroll to bottom.
Switch to window by number 0–9.
M-aCycle through unread windows.
M-lList the contents of the window without word-wrapping and with timestamps. Press Enter to return to catgirl.
M-mInsert a blank line in the window.
M-nScroll to next highlight.
M-pScroll to previous highlight.
M-sReveal spoiler text.
M-tToggle timestamps.
M-uScroll to first unread line.
M-vScroll up a page.
C-z C-vInsert the next input character literally.
C-z bToggle bold.
C-z cSet or reset color.
C-z iToggle italics.
C-z oReset formatting.
C-z pManually toggle paste mode.
C-z rToggle reverse color.
C-z sSet spoiler text (black on black).
C-z uToggle underline.
Some color codes can be inserted with the following:
| C-z A | gray | C-z N | brown (dark red) |
| C-z B | blue | C-z O | orange (dark yellow) |
| C-z C | cyan | C-z P | pink (light magenta) |
| C-z G | green | C-z R | red |
| C-z K | black | C-z W | white |
| C-z M | magenta | C-z Y | yellow |
To set other colors, follow C-z c by one or two digits for the foreground color, optionally followed by a comma and one or two digits for the background color. To reset color, follow C-z c by a non-digit.
The color numbers are as follows:
| 0 | white | 8 | yellow |
| 1 | black | 9 | light green |
| 2 | blue | 10 | cyan |
| 3 | green | 11 | light cyan |
| 4 | red | 12 | light blue |
| 5 | brown (dark red) | 13 | pink (light magenta) |
| 6 | magenta | 14 | gray |
| 7 | orange (dark yellow) | 15 | light gray |
| 99 | default |
SHELL
The shell used by /exec. The default is /bin/sh.
USER
The default nickname.
$XDG_CONFIG_DIRS/catgirl
Configuration files are searched for first in $XDG_CONFIG_HOME, usually ~/.config, followed by the colon-separated list of paths $XDG_CONFIG_DIRS, usually /etc/xdg.
~/.config/catgirl
The most likely location of configuration files.
$XDG_DATA_DIRS/catgirl
Save files are searched for first in $XDG_DATA_HOME, usually ~/.local/share, followed by the colon-separated list of paths $XDG_DATA_DIRS, usually /usr/local/share:/usr/share.
~/.local/share/catgirl
The most likely location of save files.
The catgirl client exits 0 if requested by the user, EX_UNAVAILABLE (69) if the connection is lost, and >0 if any other error occurs.
Join #ascii.town from the command line:
$ catgirl -h irc.tilde.chat -j '#ascii.town'
Create a configuration file in ~/.config/catgirl/tilde:
host = irc.tilde.chat join = #ascii.town
Load the configuration file:
$ catgirl tilde
2 releases since Debian 12 (Bookworm); the text changed 1 time.