about summary refs log tree commit diff
CATGIRL(1) General Commands Manual CATGIRL(1)

catgirlIRC 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

TABLE OF CONTENTS

The catgirl IRC client provides a curses interface for Internet Relay Chat over TLS. 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 in this manual.

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 ‘../’. For example, a configuration file at ~/.config/catgirl/tilde can be loaded by running ‘catgirl tilde’.

Each option is placed on a line, and lines beginning with ‘#’ are ignored. An optional ‘=’ may appear between an option and its value. The options are listed below following their corresponding flags. Flags and options in files are processed in the order they appear on the command line, so later values override earlier values.

util | util
Set the utility used by the /copy command. Subsequent copy options add arguments to the utility. The URL to copy is provided to the utility on standard input. The default is the first available of pbcopy(1), wl-copy(1), xclip(1) or xsel(1).
seed,bound | seed,bound
Set the seed for choosing nick and channel colours and the maximum IRC colour value that will be chosen. Changing the seed will randomize the chosen colours, in case you don't like the ones chosen for yourself or your crush.

The default is 0,75, which uses colours in the 256-colour terminal set. To use only colours from the 16-colour terminal set, use 0,15. To disable nick and channel colours, use 0,0.

pattern | pattern
Add 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.

For example, to highlight whenever your crush joins your favourite channel:

highlight crush!*@* join #channel
util | util
Send notifications using a utility. Subsequent notify options add arguments to the utility. The window name and message are provided to the utility as two additional arguments, appropriate for notify-send(1).
util | util
Set the utility used by the /open command. Subsequent open options add arguments to the utility. The URL to open is provided to the utility as an additional argument. The default is the first available of open(1) or xdg-open(1).
|
Disable the /copy, /exec and /open commands, the notify option, and viewing this manual with /help.
host | host
Bind to source address host when connecting to the server. To connect from any IPv4 address, use 0.0.0.0. To connect from any IPv6 address, use ::.
[format] | [format]
Show timestamps by default. The optional format string is interpreted by strftime(3). The string may contain raw IRC formatting codes, if you can figure out how to enter them.
user:pass | user:pass
Authenticate with NickServ during connection using SASL PLAIN. catgirl will disconnect if authentication fails. Leave pass blank to prompt for the password when catgirl starts.
path | path
Connect using a TLS client certificate loaded from path, which is searched for in the same manner as configuration files. If the private key is in a separate file, additionally specify it with the priv option.

To use this certificate to authenticate to NickServ using CertFP, use the sasl-external option. See Configuring CertFP.

Client certificates can be generated with the -g flag.

|
Authenticate to NickServ during connection using CertFP via SASL EXTERNAL. catgirl will disconnect if authentication fails. The client certificate must be specified with the cert option. See Configuring CertFP.
path
Generate a TLS client certificate using openssl(1) and write it to path.
host | host
Connect to the IRC server host.
pattern | pattern
Add 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.

Visibility of ignored messages can be toggled using M-- and M-+.

channels [keys] | channels [keys]
Join the comma-separated list of channels with the optional comma-separated list of channel keys. No spaces may appear in either list.
path | path
Load the TLS client private key for a certificate loaded with the cert option from path, which is search for in the same manner as configuration files.
|
Log messages to files in $XDG_DATA_HOME/catgirl/log (usually ~/.local/share/catgirl/log). Directories are created for each network and channel, and files are created for each date in the format YYYY-MM-DD.log.
modes | modes
Set user modes as soon as possible after connecting.
nick [...] | nick [...]
Set the nickname with optional fallbacks, should one nick be unavailable. Each nick is treated as a highlight word. The default nickname is the value of USER.
Connect to the server only to obtain its certificate chain and write it to standard output in PEM format.
port | port
Connect to the IRC server on port. The default port is 6697.
|
Raise the default message visibility threshold for new windows, hiding general events (joins, quits, etc.). The threshold can be lowered with M--.
real | real
Set the “realname” which appears in /whois. The default is the same as the nickname. This is a good place to add your pronouns.
name | name
Persist windows and their scrollback in a file called name in $XDG_DATA_DIRS/catgirl (usually ~/.local/share/catgirl), or an absolute or relative path if name starts with ‘/’, ‘./’, or ‘../’.
path | path
Trust the self-signed certificate in path, which is searched for in the same manner as configuration files. Server name verification is also disabled. See Connecting to Servers with Self-signed Certificates.
user | user
Set the username. This is almost entirely irrelevant, except that it's more likely to remain stable, and catgirl uses it to choose nick colours. The default is the same as the nickname.
|
Log raw IRC protocol to the <debug> window, as well as standard error if it is not a terminal.
pass | pass
Connect using a server password. Leave pass blank (using an ‘=’) to prompt for the password when catgirl starts.

CertFP allows you to authenticate with NickServ during connection using a TLS client certificate rather than your account password.

  1. Generate a new TLS client certificate:
    $ catgirl -g ~/.config/catgirl/example.pem
  2. Connect to the server using the certificate by adding the following configuration:
    cert example.pem
  3. Identify with NickServ, then add the certificate fingerprint to your account:
    /ns CERT ADD
  4. Enable SASL EXTERNAL in your configuration to require successful authentication when connecting (not possible on all networks):
    cert example.pem
    sasl-external

If connecting to a server fails with a certificate verification error due to a self-signed certificate, it needs to be trusted manually.

  1. Connect to the server and write its certificate to a file:
    $ catgirl -o -h irc.example.org > ~/.config/catgirl/example.pem
  2. Configure catgirl to trust the certificate:
    trust example.pem

The catgirl interface is split into three main areas.

The top line of the terminal shows window statuses. Only the currently active window and windows with activity are shown. 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 ‘-’, ‘+’ or ‘++’, 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 current scroll position. An ‘@’ indicates that there is unsent input waiting 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 whenever there are messages in a window that is not active or the terminal is not focused (in some terminal emulators).

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.

[message]
Set or clear your away status.
command
Send a command to ChanServ.
nick
Invite a user to the channel.
[channel [key]]
Join the named channel, the current channel, or the channel you've been invited to.
[channel]
List channels.
[action]
Send an action message.
nick message
Send a private message.
List users in the channel.
nick
Change nicknames.
message
Send a notice.
command
Send a command to NickServ.
List channel operators.
[message]
Leave the channel.
nick
Start a private conversation.
[message]
Quit IRC.
command
Send a raw IRC command. Use M-- to show unknown replies.
message
Send a regular message.
name
Update realname if supported by the server.
[topic]
Show or set the topic of the channel. Press Tab twice to copy the current topic.
[nick]
Query information about a user or yourself.
nick
Query past information about a user.

[name | num]
Close the named, numbered or current window.
[nick | substring]
Copy the most recent URL from nick or matching substring.
Toggle logging in the <debug> window.
command
Run command with SHELL and interpret its output as input to the current window, including as commands.
View this manual. Type q to return to catgirl.
topic
List the server help for a topic. Try /help index for a list of topics.
[pattern]
List message highlight patterns or temporarily add a pattern. To permanently add a pattern, use the highlight option.
[pattern]
List message ignore patterns or temporarily add a pattern. To permanently add a pattern, use the ignore option.
[name] num
Move the named or current window to number.
Alias of /open.
[count]
Open each of count most recent URLs.
nick | substring
Open the most recent URL from nick or matching substring.
pattern
Temporarily remove a message highlight pattern.
pattern
Temporarily remove a message ignore pattern.
List all windows.
name | substring
Switch to window by name or matching substring.
num | num
Switch to window by number.

[mask ...]
List or ban masks from the channel.
[nick ...]
Revoke channel operator status from users or yourself.
[nick ...]
Revoke voice from users or yourself in the channel.
[mask ...]
List or add masks to the channel ban exception list.
[mask ...]
List or add masks to the channel invite list.
nick [message]
Kick a user from the channel.
[modes] [param ...]
Show or set channel modes. In the window, show or set user modes.
[nick ...]
Grant users or yourself channel operator status.
mask ...
Unban masks from the channel.
mask ...
Remove masks from the channel ban exception list.
mask ...
Remove masks from the channel invite list.
[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.

Move to beginning of line.
Move left.
Delete next character.
Move to end of line.
Move right.
Delete to end of line.
Transpose characters.
Delete to beginning of line.
Delete previous word.
Expand a text macro beginning with ‘\’.
Paste previously deleted text.
Insert a newline without sending a command.
Move to previous word.
Delete next word.
Move to next word.
Collapse all whitespace.
Complete nick, channel, command or macro.

Arrow and navigation keys also work as expected.

Redraw the UI.
Switch to next window.
Switch to previous window.
Scroll to previous line matching input.
Scroll to next line matching input.
Scroll 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.
n
Switch to window by number 0–9.
Cycle through unread windows.
List the contents of the window without word-wrapping and with timestamps. Press Enter to return to catgirl.
Insert a blank line in the window.
Scroll to next highlight.
Scroll to previous highlight.
Reveal spoiler text.
Toggle timestamps.
Scroll to first unread line.
Scroll up a page.

Insert the next input character literally.
Toggle bold.
Set or reset color.
Toggle italics.
Reset formatting.
Manually toggle paste mode.
Toggle reverse color.
Set spoiler text (black on black).
Toggle underline.

Some color codes can be inserted with the following:

gray brown (dark red)
blue orange (dark yellow)
cyan pink (light magenta)
green red
black white
magenta 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

The shell used by /exec. The default is /bin/sh.
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, 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

The catgirl client implements the vendor-specific IRCv3 capability offered by pounce(1). The consumer position is stored in the save file.

June McEnroe <june@causal.agency>

Send mail to <list+catgirl@causal.agency> or join #ascii.town on irc.tilde.chat.

May 22, 2024 OpenBSD 7.4