cio

a simple irc client
git clone git://kloet.net/cio
Download | Log | Files | Refs | README | LICENSE

cio.1 (3746B)


      1 .Dd May 1, 2026
      2 .Dt CIO 1
      3 .Os
      4 .Sh NAME
      5 .Nm cio
      6 .Nd a minimal IRC client
      7 .
      8 .Sh SYNOPSIS
      9 .Nm cio
     10 .Op Fl vTV
     11 .Op Fl l Ar logfile
     12 .Op Fl n Ar nick
     13 .Op Fl p Ar port
     14 .Op Fl s Ar server
     15 .Op Fl u Ar user
     16 .Op Fl c Ar certificate
     17 .
     18 .Sh DESCRIPTION
     19 .Nm
     20 is a multiplexing curses interface for IRC featuring TLS, UTF-8, and scrollback.
     21 .Nm
     22 does not aim for complete coverage of rfc2812, but rather focuses on taking
     23 design choices with the aim of creating hackable code that is easily extendable.
     24 .Sh OPTIONS
     25 .Bl -tag -width Ds
     26 .It Fl T
     27 Disable TLS and connect using a plaintext socket.
     28 .It Fl V
     29 Disable TLS hostname validation.
     30 .It Fl l Ar logfile
     31 Append all IRC activity, including timestamps and channel names, to
     32 .Ar logfile .
     33 .It Fl n Ar nick
     34 Set the IRC nickname.
     35 If not provided,
     36 .Nm
     37 will check the
     38 .Ev IRCNICK
     39 environment variable, then the
     40 .Ev USER
     41 variable.
     42 .It Fl p Ar port
     43 Connect to the server on
     44 .Ar port .
     45 Defaults to 6697.
     46 .It Fl s Ar server
     47 Connect to the IRC server at
     48 .Ar server .
     49 Defaults to irc.oftc.net.
     50 .It Fl u Ar user
     51 Set the IRC username (ident).
     52 Defaults to the value of the
     53 .Ev USER
     54 environment variable, or "anonymous".
     55 .It Fl c Ar certificate
     56 Use
     57 .Ar certificate
     58 as a TLS client certificate.
     59 This is used for both establishing the encrypted connection and for SASL
     60 EXTERNAL (CertFP) authentication.
     61 .El
     62 .
     63 .Sh COMMANDS
     64 .Ss Chat Commands
     65 Chat commands are submitted with a newline.
     66 They are not prepended with a '/'.
     67 Any text not matching a command is sent as a message to the currently
     68 focused channel.
     69 .Bl -tag -width Ds
     70 .It Ic j Ar #channel
     71 Join a given channel
     72 .It Ic l Op Ar #channel
     73 Leave the given channel(s), defaults to current channel.
     74 .It Ic m Ar recipient message
     75 Sends a private message.
     76 .It Ic r Ar message
     77 Sends a raw IRC message to the server.
     78 .It Ic q
     79 Quits
     80 .Nm .
     81 .El
     82 .Ss Interface Commands
     83 .Bl -tag -width Ds
     84 .It Ic ^n
     85 Increases focused window index by 1 (wrapping).
     86 .It Ic ^p
     87 Decreases focused window index by 1 (wrapping).
     88 .It Ic PAGEUP
     89 Scrolls chat up by 15 lines.
     90 .It Ic PAGEDOWN
     91 Scrolls chat down by 15 lines.
     92 .El
     93 .Ss Line Editing
     94 The following key bindings are available when entering text:
     95 .Bl -tag -width Ds
     96 .It Ic ^A
     97 Move cursor to the beginning of the line.
     98 .It Ic ^E
     99 Move cursor to the end of the line.
    100 .It Ic ^B No \&| Ic LEFTARROW
    101 Move cursor one character to the left.
    102 .It Ic ^F No \&| Ic RIGHTARROW
    103 Move cursor one character to the right.
    104 .It Ic ^K
    105 Delete from the cursor to the end of the line.
    106 .It Ic ^U
    107 Delete from the beginning of the line to the cursor.
    108 .It Ic ^D
    109 Delete character under the cursor.
    110 .It Ic ^H
    111 Delete character to the left of the cursor.
    112 .It Ic ^W
    113 Delete word to the left of the cursor.
    114 .It Ic BACKSPACE
    115 Delete character to the left of the cursor.
    116 .It Ic ENTER
    117 Submit current line.
    118 .El
    119 .
    120 .Sh ENVIRONMENT
    121 .Bl -tag -width Ds
    122 .It Ev USER
    123 The username to use.
    124 Overridden by
    125 .Fl u .
    126 .It Ev IRCNICK
    127 The nickname to use.
    128 Overridden by
    129 .Fl n .
    130 .It Ev IRCPASS
    131 The password to used for SASL PLAIN authentication.
    132 This is used if no certificate is provided via
    133 .Fl c .
    134 .El
    135 .
    136 .Sh EXIT STATUS
    137 .Nm
    138 exits 0 if requested by the user and >0 if any other error occurs.
    139 .Sh EXAMPLES
    140 .Ss Using CertFP
    141 .Bl -enum
    142 .It
    143 Generate a new TLS client certificate:
    144 .Bd -literal
    145 $ openssl req -x509 -newkey rsa:4096 -nodes -days 365 \\
    146 	-keyout user.pem -out user.pem -subj "/CN=CertFP"
    147 $ chmod 600 user.pem
    148 .Ed
    149 .It
    150 Connect to the server using the certificate:
    151 .Bd -literal
    152 $ cio -c user.pem
    153 .Ed
    154 .It
    155 Identify with the server normally then add the certificate fingerprint to
    156 your account:
    157 .Bd -literal
    158 m nickserv cert add
    159 .Ed
    160 .El
    161 .
    162 .Sh HISTORY
    163 .Nm
    164 is a fork of
    165 .Lk https://c9x.me/irc/ irc.c
    166 written by
    167 .An Quentin Carbonneaux Aq Mt qcarbonneaux@gmail.com .
    168 .
    169 .Sh AUTHORS
    170 .An Andrew Kloet Aq Mt andrew@kloet.net