Provided by: catgirl_2.2-1build1_amd64 bug

NAME

       catgirl — IRC client

SYNOPSIS

       catgirl  [-KRelqv]  [-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

DESCRIPTION

       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 = util
               Set 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,bound
               Set 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 = 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.

       -K | kiosk
               Disable  the  /copy,  /debug,  /exec,  /join, /list, /msg, /open, /part, /query, /quote commands.
               Replace the username with a hash of its original value.

       -N util | notify = util
               Send 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 = util
               Set 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 | restrict
               Disable the /copy, /exec and /open commands, the notify option,  and  viewing  this  manual  with
               /help.

       -S host | bind = host
               Bind 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:pass
               Authenticate as user with pass using SASL PLAIN.  Leave pass blank to prompt for the password.

       -c path | cert = path
               Load 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-external
               Authenticate 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 = host
               Connect to host.

       -i pattern | ignore = 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.

       -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 = priv
               Load the TLS client private key from path.  The path is  searched  for  in  the  same  manner  as
               configuration files.

       -l | log
               Log chat events to files in paths $XDG_DATA_HOME/catgirl/log/network/channel/YYYY-MM-DD.log.

       -m mode | mode = mode
               Set 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 = port
               Connect to port.  The default port is 6697.

       -q | quiet
               Raise  the  default  message  visibility threshold for new windows, hiding general events (joins,
               quits, etc.).

       -r real | real = real
               Set realname to real.  The default realname is the same as the nickname.

       -s name | save = name
               Save 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 = path
               Trust  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 = user
               Set username to user.  The default username is the same as the nickname.

       -v | debug
               Log raw IRC messages to the <debug> window as well as standard error if it is not a terminal.

       -w pass | pass = pass
               Log in with the server password pass.  Leave pass blank to prompt for the password.

   Configuring CertFP
       1.   Generate a new TLS client certificate:

                  $ catgirl -g ~/.config/catgirl/example.pem

       2.   Connect to the server using the certificate:

                  cert = example.pem
                  # or: $ catgirl -c example.pem

       3.   Identify with services or use sasl-plain, then add the certificate fingerprint to your account:

                  /ns CERT ADD

       4.   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

   Connecting to Servers with Self-signed Certificates
       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
                  # or: $ catgirl -t example.pem

INTERFACE

       The catgirl interface is split into three areas.

   Status Line
       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.

   Chat Area
       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.

   Input 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.

COMMANDS

       Any unique prefix can be used to abbreviate a command.  For example, /join can be typed /j.

   Chat Commands
       /away [message]
               Set or clear your away status.

       /cs command
               Send a command to ChanServ.

       /invite nick
               Invite 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 message
               Send a private message.

       /names  List users in the channel.

       /nick nick
               Change nicknames.

       /notice message
               Send a notice.

       /ns command
               Send a command to NickServ.

       /ops    List channel operators.

       /part [message]
               Leave the channel.

       /query nick
               Start a private conversation.

       /quit [message]
               Quit IRC.

       /quote command
               Send a raw IRC command.  Use M-- to show unknown replies.

       /say message
               Send a regular message.

       /setname name
               Update 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 nick
               Query past information about a user.

   UI Commands
       /close [name | num]
               Close the named, numbered or current window.

       /copy [nick | substring]
               Copy the most recent URL from nick or matching substring.

       /debug  Toggle logging in the <debug> window.

       /exec command
               Run command with SHELL and interpret its output as input to  the  current  window,  including  as
               commands.

       /help   View this manual.  Type q to return to catgirl.

       /help topic
               List 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] num
               Move the named or current window to number.

       /open [count]
               Open each of count most recent URLs.

       /open nick | substring
               Open the most recent URL from nick or matching substring.

       /unhighlight pattern
               Temporarily remove a message highlight pattern.

       /unignore pattern
               Temporarily remove a message ignore pattern.

       /window
               List all windows.

       /window name | substring
               Switch to window by name or matching substring.

       /window num | /num
               Switch to window by number.

   Operator Commands
       /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.

KEY BINDINGS

       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.

   Line Editing
       C-a     Move to beginning of line.
       C-b     Move left.
       C-d     Delete next character.
       C-e     Move to end of line.
       C-f     Move right.
       C-k     Delete to end of line.
       C-t     Transpose characters.
       C-u     Delete to beginning of line.
       C-w     Delete previous word.
       C-x     Expand a text macro beginning with ‘\’.
       C-y     Paste previously deleted text.
       M-Enter
               Insert a newline without sending a command.
       M-b     Move to previous word.
       M-d     Delete next word.
       M-f     Move to next word.
       M-q     Collapse all whitespace.
       Tab     Complete nick, channel, command or macro.

       Arrow and navigation keys also work as expected.

   Window Keys
       C-l     Redraw the UI.
       C-n     Switch to next window.
       C-p     Switch to previous window.
       C-r     Scroll to previous line matching input.
       C-s     Scroll to next line matching input.
       C-v     Scroll down a page.
       M-+     Raise message visibility threshold, hiding ignored messages, general events (joins, quits, etc.),
               or non-highlighted messages.
       M--     Lower message visibility threshold, showing ignored messages and unknown replies.
       M-=     Toggle mute.  Muted windows do not appear in the status line unless you are mentioned.
       M-/     Switch to previously selected window.
       M-<     Scroll to top.
       M->     Scroll to bottom.
       M-n     Switch to window by number 0–9.
       M-a     Cycle through unread windows.
       M-l     List the contents of the window without word-wrapping and with timestamps.  Press Enter to return
               to catgirl.
       M-m     Insert a blank line in the window.
       M-n     Scroll to next highlight.
       M-p     Scroll to previous highlight.
       M-s     Reveal spoiler text.
       M-t     Toggle timestamps.
       M-u     Scroll to first unread line.
       M-v     Scroll up a page.

   IRC Formatting
       C-z C-v  Insert the next input character literally.
       C-z b    Toggle bold.
       C-z c    Set or reset color.
       C-z i    Toggle italics.
       C-z o    Reset formatting.
       C-z p    Manually toggle paste mode.
       C-z r    Toggle reverse color.
       C-z s    Set spoiler text (black on black).
       C-z u    Toggle 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

ENVIRONMENT

       SHELL   The shell used by /exec.  The default is /bin/sh.

       USER    The default nickname.

FILES

       $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.

EXIT STATUS

       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.

EXAMPLES

       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

STANDARDS

       Adam     and     Attila     Molnar,     invite-notify      Extension,      IRCv3      Working      Group,
       https://ircv3.net/specs/extensions/invite-notify.

       Jack    Allnutt,    Val    Lorentz,   and   Daniel   Oaks,   Modern   IRC   Client   Protocol,   ircdocs,
       https://modern.ircdocs.horse/index.html.

       Kiyoshi Aman, Kyle Fuller, Stéphan Kochen, Alexey Sokolov, and James Wheare, Message Tags, IRCv3  Working
       Group, https://ircv3.net/specs/extensions/message-tags.

       Kiyoshi  Aman, extended-join Extension, IRCv3 Working Group, https://ircv3.net/specs/extensions/extended-
       join.

       Waldo   Bastian,   Ryan   Lortie,   and   Lennart   Poettering,   XDG   Base   Directory   Specification,
       https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html, November 24, 2010.

       Christine    Dodrill,    Ryan,    and   James   Wheare,   chghost   Extension,   IRCv3   Working   Group,
       https://ircv3.net/specs/extensions/chghost.

       Kyle Fuller, Stéphan Kochen, Alexey Sokolov, and  James  Wheare,  server-time  Extension,  IRCv3  Working
       Group, https://ircv3.net/specs/extensions/server-time.

       Lee  Hardy,  Perry  Lorier,  Kevin  L. Mitchell, Attila Molnar, Daniel Oakley, William Pitcock, and James
       Wheare, Client Capability  Negotiation,  IRCv3  Working  Group,  https://ircv3.net/specs/core/capability-
       negotiation.

       S.    Josefsson,    The    Base16,    Base32,    and    Base64    Data   Encodings,   IETF,   RFC   4648,
       https://tools.ietf.org/html/rfc4648, October 2006.

       C. Kalt, Internet Relay Chat: Client Protocol, IETF, RFC 2812, https://tools.ietf.org/html/rfc2812, April
       2000.

       Janne      Mareike      Koschinski,       setname       Extension,       IRCv3       Working       Group,
       https://ircv3.net/specs/extensions/setname.

       Mantas        Mikulėnas,        userhost-in-names       Extension,       IRCv3       Working       Group,
       https://ircv3.net/specs/extensions/userhost-in-names.

       Daniel Oaks, IRC Formatting, ircdocs, https://modern.ircdocs.horse/formatting.html.

       Daniel       Oaks,       Standard       Replies       Extension,       IRCv3        Working        Group,
       https://ircv3.net/specs/extensions/standard-replies.

       J.     Oikarinen    and    D.    Reed,    Internet    Relay    Chat    Protocol,    IETF,    RFC    1459,
       https://tools.ietf.org/html/rfc1459, May 1993.

       William  Pitcock   and   Jilles   Tjoelker,   IRCv3.1   SASL   Authentication,   IRCv3   Working   Group,
       https://ircv3.net/specs/extensions/sasl-3.1.

       William  Pitcock,  multi-prefix Extension, IRCv3 Working Group, https://ircv3.net/specs/extensions/multi-
       prefix.

       James Wheare, Message IDs, IRCv3 Working Group, https://ircv3.net/specs/extensions/message-ids.

       James Wheare, reply Client Tag, IRCv3 Working Group, https://ircv3.net/specs/client-tags/reply.

       K. Zeilenga, Ed., The PLAIN Simple Authentication and Security Layer (SASL) Mechanism,  IETF,  RFC  4616,
       https://tools.ietf.org/html/rfc4616, August 2006.

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

AUTHORS

       June McEnroe <june@causal.agency>

BUGS

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

Debian                                            May 29, 2022                                        CATGIRL(1)