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