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