1senpai(1)
2
3# NAME
4
5senpai - your everyday IRC student
6
7# SYNOPSIS
8
9*senpai* [options...]
10
11# OPTIONS
12
13*-config* <path>
14 Use a different path for the configuration file. Its format is documented
15 in *senpai*(5).
16
17*-nickname* <nickname>
18 Advanced. Nick name to connect as. Overrides the configuration item of the
19 same name.
20
21*-debug*
22 Advanced. Show all IRC messages that are received from/sent to the server.
23
24*-version*
25 Display version info.
26
27# DESCRIPTION
28
29senpai is an IRC client made for bouncers. It supports the newest IRC
30extensions, such as:
31
32- _CHATHISTORY_, senpai fetches history from the server instead of keeping logs,
33- _@+typing_, senpai shows when others are typing a message,
34- _BOUNCER_, senpai connects to all your networks at once automatically,
35- _SEARCH_, senpai can search messages quickly server-side,
36- _FILEHOST_, senpai can upload files to the bouncer,
37- and more to come!
38
39# CONFIGURATION
40
41senpai searches for it in the following location:
42
43 $XDG_CONFIG_HOME/senpai/senpai.scfg
44
45If unset, $XDG_CONFIG_HOME defaults to *~/.config* or the platform's equivalent
46
47For information about the configuration format, see *senpai*(5).
48
49If the configuration file does not exist, a setup assistant will create one for
50you.
51
52# USER INTERFACE
53
54The user interface of senpai consists of several parts.
55
56On the left, the *buffer list*, shows joined channels. The special buffer *home*
57is where server notices are shown. The list can be put on the bottom of the
58screen with a configuration option. Buffers can be closed with the mouse middle
59click, or the _part_ command.
60
61On the right, the *member list*, shows members joined to the current channel.
62
63On the bottom, the *input field* is where you type in messages or commands
64(see *COMMANDS*). By default, when you type a message, senpai will inform
65others in the channel that you are typing.
66
67On the row above, the *status line* (or... just a line if nothing is
68happening...) is where typing indicators are shown (e.g. "dan- is typing...").
69
70Finally, the message *timeline* is displayed on the rest of the screen.
71
72senpai supports the mouse almost everywhere (clicking on nicks, buffers,
73members, links; resizing panels; and features "buttons"). On supported
74terminals, the cursor will turn into a hand when over a clickable element.
75
76# SELECTING TEXT
77
78In order to select text with a mouse, hold SHIFT while clicking and dragging
79the mouse. *Clicking and dragging without holding SHIFT will not work, as
80senpai eats these events for eg selecting channels.*
81
82# OPENING LINKS
83
84In order to open links, refer to your terminal manual. On most terminals,
85opening links is done by holding CTRL, or SHIFT, while clicking the link.
86On the *foot* terminal, links can be opened by pressing CTRL+SHIFT+O.
87
88By simply clicking an link it will be opened.
89
90# KEYBOARD SHORTCUTS
91
92These shortcuts can be customized in the configuration, see senpai(5).
93
94*CTRL-A*
95 Move the cursor to the beginning of the input field.
96
97*CTRL-E*
98 Move the cursor to the end of the input field.
99
100*CTRL-S*
101 Enable text formatting - see the _FORMATTING_ section.
102
103*CTRL-C*
104 Clear input line, or prepare for exit by adding /quit to input line.
105
106*CTRL-F*
107 Prepare for search: add /search to input line.
108
109*CTRL-K*
110 Prepare for jumping to a buffer: add /buffer to input line.
111
112*CTRL-ALT-V*
113 Prepare for uploading the clipboard: add /upload to input line.
114
115*CTRL-U*, *PgUp*
116 Go up in the timeline.
117
118*CTRL-D*, *PgDown*
119 Go down in the timeline.
120
121*CTRL-N*, *ALT-RIGHT*
122 Go to the next buffer.
123
124*CTRL-P*, *ALT-LEFT*
125 Go to the previous buffer.
126
127*SHIFT-RIGHT*
128 Go to the next unread buffer.
129
130*SHIFT-LEFT*
131 Go to the previous unread buffer.
132
133*ALT-HOME*
134 Go to the first buffer.
135
136*ALT-END*
137 Go to the last buffer.
138
139*ALT-P*
140 Go to the previous highlight
141
142*ALT-N*
143 Go to the next highlight, or to the (most recent) end of the timeline if
144 there is none.
145
146*ALT-{1..9}*
147 Go to buffer by index.
148
149*UP*, *DOWN*, *LEFT*, *RIGHT*, *HOME*, *END*, *BACKSPACE*, *DELETE*
150 Edit the text in the input field.
151
152*ENTER*
153 Sends the contents of the input field.
154
155*TAB*
156 Open the auto-completion dialog. Choose auto-completion item with *UP* and
157 *DOWN*, then press *TAB* again to confirm.
158
159*CTRL-L*
160 Refresh the window.
161
162*F7*
163 Show/hide the vertical channel list.
164
165*F8*
166 Show/hide the vertical member list.
167
168# FORMATTING
169
170Senpai can insert formatted text like italics, bold, underline, colors, etc.
171To do this, Toggle text formatting (default *CTRL+S*) followed by a key
172indicating the format character. The prompt will turn into *<fmt>* when text
173formatting is enabled. The format characters are:
174
175*\_*
176 Italic. Inserts the ASCII character 0x1D.
177
178*\**
179 *Bold*. Inserts the ASCII character 0x02.
180
181*=*
182 _Underline_. Inserts the ASCII character 0x1F.
183
184*~*
185 Strikethrough. Inserts the ASCII character 0x1E. May not be supported
186 by all IRC clients.
187
188*|*
189 Reverse. Inserts the ASCII character 0x16. May not provide consistent
190 behavior across all IRC clients, if supported.
191
192*`*
193 Monospace. Inserts the ASCII character 0x11. Only a few IRC clients
194 with a graphical interface support this character.
195
196*^*
197 Color. Inserts the ASCII character 0x03.++
198 The color is inserted by inserting a number or two after the character.
199 These numbers are defined by color codes and include a foreground and
200 (optionally) a background color. For example,
201 ```
202 ^04Hello World
203 ```
204 will output Red text, and
205 ```
206 ^07,09Hello World
207 ```
208 will output Orange text on a Light Green background. Color codes 0-15 are
209 represented by terminal colors, 16-98 represents set RGB values, and 99
210 represents default foreground or background. Refer to the end of this
211 section for more details.
212
213*#*
214 Hexadecimal color. Inserts the ASCII character 0x04.++
215 The color is inserted by inserting a six hexadecimal digits that arepresent
216 the hexadecimal color. For example,
217 ```
218 ^FF0000Hello World
219 ```
220 will output bright red text. Specifying the background is similar to the
221 color format character (*^*).
222
223*-*
224 Reset. Clears formatting applied thus far in the input buffer. Inserts
225 ASCII character 0x1F.
226
227Note that all of the formatting characters are able to be previewed in the
228input area except for the color specifiers.
229
230Refer to <https://modern.ircdocs.horse/formatting> for more information
231about IRC formatting.
232
233# COMMANDS
234
235If you type and send a message that starts with a slash (*/*), it will instead
236be interpreted as a command:
237
238 /_name_ argument1 argument2...
239
240_name_ is matched case-insensitively. It can be one of the following:
241
242*HELP* [search]
243 Show the list of command (or a commands that match the given search terms).
244
245*JOIN* <channel>
246 Join the given channel.
247
248*PART* [channel] [reason]
249 Part the given channel, defaults to the current one if omitted.
250
251*QUIT* [reason]
252 Quits senpai.
253
254*MOTD*
255 Show the message of the day (MOTD).
256
257*NAMES*
258 Show the member list of the current channel. Powerlevels (such as _@_ for
259 "operator", or _+_ for "voice") are shown in green.
260
261*TOPIC* [topic]
262 If _topic_ is omitted, show the topic of the current channel and, if
263 available, the person who set it and the time when it has been set.
264
265 Otherwise, change the topic of the current channel to _topic_.
266
267*MUTE*
268 Mute the current channel. This prevents being distracted from new messages
269 on unimportant channels.
270
271 This moves the channel to the end of the server, and greys its name out so
272 that new messages do not change its color in the list. Highlights will still
273 send a notification.
274
275*UNMUTE*
276 Unmute the current channel. See *MUTE*.
277
278*PIN*
279 Pin the current channel. This moves the channel to the start of the buffer
280 list.
281
282*UNPIN*
283 Unpin the current channel. See *PIN*.
284
285*MSG* <target> <content>
286 Send _content_ to _target_.
287
288*REPLY* <content>
289 Reply to the last person who sent a private message.
290
291*ME* <content>
292 Send a message prefixed with your nick (a user action). If sent from home,
293 reply to the last person who sent a private message.
294
295*NP*
296 Send the current song that is being played on the system. Uses DBus/MPRIS
297 internally.
298
299*UPLOAD* [file path]
300 Upload a local file to the bouncer. If no path is given, upload the
301 current clipboard content instead (requires *wl-paste* on Wayland or
302 *xclip* on X11; Linux only).
303
304*SCREENSHOT*
305 Take and upload a screenshot to the bouncer.
306
307 Requires support for D-Bus and xdg-desktop-portal (e.g. Gnome, or
308 xdg-desktop-portal-wlr on sway).
309
310*QUOTE* <raw message>
311 Send _raw message_ verbatim.
312
313*LIST* [pattern]
314 List public channels, optionally matching the specified pattern.
315
316*BUFFER* <index|name>
317 Switch to the buffer at the _index_ position, or containing _name_.
318 The buffer list will be filtered according to the passed name; entering the
319 command will select the first buffer in the list.
320
321*WHOIS* <nickname>
322 Get information about someone who is connected.
323
324*WHOWAS* <nickname>
325 Get information about someone who is disconnected.
326
327*NICK* <nickname>
328 Change your nickname.
329
330*OPER* <username> <password>
331 Log in to an operator account.
332
333*MODE* <nick/channel> <flags> [args]
334 Change channel or user modes.
335
336*INVITE* <nick> [channel]
337 Invite _nick_ to _channel_ (the current channel if not given).
338
339*KICK* <nick> [channel] [message]
340 Eject _nick_ from _channel_ (the current channel if not given) with an
341 optional kick message/reason.
342
343*BAN* <nick> [channel]
344 Ban _nick_ from entering _channel_ (the current channel if not given).
345
346*UNBAN* <nick> [channel]
347 Allow _nick_ to enter _channel_ again (the current channel if not given).
348
349*SEARCH* <text>
350 Search messages matching the given text, in the current channel or server.
351 This opens a temporary list, which can be closed with the escape key.
352
353*AWAY* [message]
354 Mark yourself as away, with an optional away message. Use *BACK* to cancel.
355
356*BACK*
357 Mark yourself as back from being away (see *AWAY*).
358
359*VERSION* [target]
360 Query the server software version.
361
362*ADMIN* [target]
363 Query the server administrative information.
364
365*LUSERS*
366 Query the server user information.
367
368*TIME* [target]
369 Query the server local time.
370
371*INFO*
372 Query server information.
373
374*LINKS*
375 Query the servers of the network.
376
377*SHRUG*
378 Send a shrug emoji to the current channel. ¯\\\_(ツ)\_/¯
379
380*TABLEFLIP*
381 Send a table flip emoji to the current channel. (╯°□°)╯︵ ┻━┻
382
383*STATS* <query> [target]
384 Query server statistics (advanced).
385
386*CONNECT* <target server> [<port> [remote server]]
387 Connect a server to the network (advanced).
388
389*SQUIT* <server> [comment]
390 Disconnects a server from the network (advanced).
391
392*KILL* <nick> [message]
393 Eject someone from the server (advanced).
394
395*REHASH*
396 Make the server reload its configuration (advanced).
397
398*RESTART*
399 Make the server restart (advanced).
400
401*WALLOPS* [text]
402 Broadcast a message to all users (advanced).
403
404# ENVIRONMENT VARIABLES
405
406The following standard environment variables are supported.
407
408*ALL_PROXY*
409 URL of a SOCKS proxy to use when connecting to the server.
410
411*SSL_CERT_DIR*
412 Colon-separated list of directories containing TLS certificates to trust, in
413 OpenSSL c_rehash format.
414
415*SSL_CERT_FILE*
416 Path to a file, PEM-encoded, containing a list of TLS certificates to trust.
417
418# SEE ALSO
419
420*senpai*(5)
421
422# AUTHORS
423
424Creator/Sensei: Hubert Hirtz <hubert@hirtzfr.eu>!++
425Current maintainer: delthas <delthas@dille.cc>.++
426Sources are available at <https://git.sr.ht/~delthas/senpai>.++
427Patches are welcome by email at <~delthas/senpai-dev@lists.sr.ht>.