master sewn/kohai / doc / senpai.1.scd
  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*ALT-R*, *ALT-E*
122	Mark the current message as reply/reacting to, respectively.
123
124*CTRL-N*, *ALT-RIGHT*
125	Go to the next buffer.
126
127*CTRL-P*, *ALT-LEFT*
128	Go to the previous buffer.
129
130*SHIFT-RIGHT*
131	Go to the next unread buffer.
132
133*SHIFT-LEFT*
134	Go to the previous unread buffer.
135
136*ALT-HOME*
137	Go to the first buffer.
138
139*ALT-END*
140	Go to the last buffer.
141
142*ALT-P*
143	Go to the previous highlight
144
145*ALT-N*
146	Go to the next highlight, or to the (most recent) end of the timeline if
147	there is none.
148
149*ALT-{1..9}*
150	Go to buffer by index.
151
152*UP*, *DOWN*, *LEFT*, *RIGHT*, *HOME*, *END*, *BACKSPACE*, *DELETE*
153	Edit the text in the input field.
154
155*ENTER*
156	Sends the contents of the input field.
157
158*TAB*
159	Open the auto-completion dialog. Choose auto-completion item with *UP* and
160	*DOWN*, then press *TAB* again to confirm.
161
162*CTRL-L*
163	Refresh the window.
164
165*F7*
166	Show/hide the vertical channel list.
167
168*F8*
169	Show/hide the vertical member list.
170
171# FORMATTING
172
173Senpai can insert formatted text like italics, bold, underline, colors, etc.
174To do this, Toggle text formatting (default *CTRL+S*) followed by a key
175indicating the format character. The prompt will turn into *<fmt>* when text
176formatting is enabled. The format characters are:
177
178*\_*
179	Italic. Inserts the ASCII character 0x1D.
180
181*\**
182	*Bold*. Inserts the ASCII character 0x02.
183
184*=*
185	_Underline_. Inserts the ASCII character 0x1F.
186
187*~*
188	Strikethrough. Inserts the ASCII character 0x1E. May not be supported
189	by all IRC clients.
190
191*|*
192	Reverse. Inserts the ASCII character 0x16. May not provide consistent
193	behavior across all IRC clients, if supported.
194
195*`*
196	Monospace. Inserts the ASCII character 0x11. Only a few IRC clients
197	with a graphical interface support this character.
198
199*^*
200	Color. Inserts the ASCII character 0x03.++
201	The color is inserted by inserting a number or two after the character.
202	These numbers are defined by color codes and include a foreground and
203	(optionally) a background color. For example,
204	```
205	^04Hello World
206	```
207	will output Red text, and
208	```
209	^07,09Hello World
210	```
211	will output Orange text on a Light Green background. Color codes 0-15 are
212	represented by terminal colors, 16-98 represents set RGB values, and 99
213	represents default foreground or background. Refer to the end of this
214	section for more details.
215
216*#*
217	Hexadecimal color. Inserts the ASCII character 0x04.++
218	The color is inserted by inserting a six hexadecimal digits that arepresent
219	the hexadecimal color. For example,
220	```
221	^FF0000Hello World
222	```
223	will output bright red text. Specifying the background is similar to the
224	color format character (*^*).
225
226*-*
227	Reset. Clears formatting applied thus far in the input buffer. Inserts
228	ASCII character 0x1F.
229
230Note that all of the formatting characters are able to be previewed in the
231input area except for the color specifiers.
232
233Refer to <https://modern.ircdocs.horse/formatting> for more information
234about IRC formatting.
235
236# COMMANDS
237
238If you type and send a message that starts with a slash (*/*), it will instead
239be interpreted as a command:
240
241	/_name_ argument1 argument2...
242
243_name_ is matched case-insensitively.  It can be one of the following:
244
245*HELP* [search]
246	Show the list of command (or a commands that match the given search terms).
247
248*JOIN* <channel>
249	Join the given channel.
250
251*PART* [channel] [reason]
252	Part the given channel, defaults to the current one if omitted.
253
254*QUIT* [reason]
255	Quits senpai.
256
257*MOTD*
258	Show the message of the day (MOTD).
259
260*NAMES*
261	Show the member list of the current channel.  Powerlevels (such as _@_ for
262	"operator", or _+_ for "voice") are shown in green.
263
264*TOPIC* [topic]
265	If _topic_ is omitted, show the topic of the current channel and, if
266	available, the person who set it and the time when it has been set.
267
268	Otherwise, change the topic of the current channel to _topic_.
269
270*MUTE*
271	Mute the current channel. This prevents being distracted from new messages
272	on unimportant channels.
273
274	This moves the channel to the end of the server, and greys its name out so
275	that new messages do not change its color in the list. Highlights will still
276	send a notification.
277
278*UNMUTE*
279	Unmute the current channel. See *MUTE*.
280
281*PIN*
282	Pin the current channel. This moves the channel to the start of the buffer
283	list.
284
285*UNPIN*
286	Unpin the current channel. See *PIN*.
287
288*MSG* <target> <content>
289	Send _content_ to _target_.
290
291*REPLY* <content>
292	Reply to the last person who sent a private message.
293
294*ME* <content>
295	Send a message prefixed with your nick (a user action). If sent from home,
296	reply to the last person who sent a private message.
297
298*NP*
299	Send the current song that is being played on the system. Uses DBus/MPRIS
300	internally.
301
302*UPLOAD* [file path]
303	Upload a local file to the bouncer. If no path is given, upload the
304	current clipboard content instead (requires *wl-paste* on Wayland or
305	*xclip* on X11; Linux only).
306
307*SCREENSHOT*
308	Take and upload a screenshot to the bouncer.
309
310	Requires support for D-Bus and xdg-desktop-portal (e.g. Gnome, or
311	xdg-desktop-portal-wlr on sway).
312
313*QUOTE* <raw message>
314	Send _raw message_ verbatim.
315
316*LIST* [pattern]
317	List public channels, optionally matching the specified pattern.
318
319*BUFFER* <index|name>
320	Switch to the buffer at the _index_ position, or containing _name_.
321	The buffer list will be filtered according to the passed name; entering the
322	command will select the first buffer in the list.
323
324*WHOIS* <nickname>
325	Get information about someone who is connected.
326
327*WHOWAS* <nickname>
328	Get information about someone who is disconnected.
329
330*NICK* <nickname>
331	Change your nickname.
332
333*OPER* <username> <password>
334	Log in to an operator account.
335
336*MODE* <nick/channel> <flags> [args]
337	Change channel or user modes.
338
339*INVITE* <nick> [channel]
340	Invite _nick_ to _channel_ (the current channel if not given).
341
342*KICK* <nick> [channel] [message]
343	Eject _nick_ from _channel_ (the current channel if not given) with an
344	optional kick message/reason.
345
346*BAN* <nick> [channel]
347	Ban _nick_ from entering _channel_ (the current channel if not given).
348
349*UNBAN* <nick> [channel]
350	Allow _nick_ to enter _channel_ again (the current channel if not given).
351
352*SEARCH* <text>
353	Search messages matching the given text, in the current channel or server.
354	This opens a temporary list, which can be closed with the escape key.
355
356*AWAY* [message]
357	Mark yourself as away, with an optional away message. Use *BACK* to cancel.
358
359*BACK*
360	Mark yourself as back from being away (see *AWAY*).
361
362*VERSION* [target]
363	Query the server software version.
364
365*ADMIN* [target]
366	Query the server administrative information.
367
368*LUSERS*
369	Query the server user information.
370
371*TIME* [target]
372	Query the server local time.
373
374*INFO*
375	Query server information.
376
377*LINKS*
378	Query the servers of the network.
379
380*SHRUG*
381	Send a shrug emoji to the current channel. ¯\\\_()\_/¯
382
383*TABLEFLIP*
384	Send a table flip emoji to the current channel. (°°) 
385
386*STATS* <query> [target]
387	Query server statistics (advanced).
388
389*CONNECT* <target server> [<port> [remote server]]
390	Connect a server to the network (advanced).
391
392*SQUIT* <server> [comment]
393	Disconnects a server from the network (advanced).
394
395*KILL* <nick> [message]
396	Eject someone from the server (advanced).
397
398*REHASH*
399	Make the server reload its configuration (advanced).
400
401*RESTART*
402	Make the server restart (advanced).
403
404*WALLOPS* [text]
405	Broadcast a message to all users (advanced).
406
407# ENVIRONMENT VARIABLES
408
409The following standard environment variables are supported.
410
411*ALL_PROXY*
412	URL of a SOCKS proxy to use when connecting to the server.
413
414*SSL_CERT_DIR*
415	Colon-separated list of directories containing TLS certificates to trust, in
416	OpenSSL c_rehash format.
417
418*SSL_CERT_FILE*
419	Path to a file, PEM-encoded, containing a list of TLS certificates to trust.
420
421# SEE ALSO
422
423*senpai*(5)
424
425# AUTHORS
426
427Creator/Sensei: Hubert Hirtz <hubert@hirtzfr.eu>!++
428Current maintainer: delthas <delthas@dille.cc>.++
429Sources are available at <https://git.sr.ht/~delthas/senpai>.++
430Patches are welcome by email at <~delthas/senpai-dev@lists.sr.ht>.