logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

catgirl.1 (21972B)


  1. .Dd February 22, 2022
  2. .Dt CATGIRL 1
  3. .Os
  4. .
  5. .Sh NAME
  6. .Nm catgirl
  7. .Nd IRC client
  8. .
  9. .Sh SYNOPSIS
  10. .Nm
  11. .Op Fl KRelqv
  12. .Op Fl C Ar copy
  13. .Op Fl H Ar hash
  14. .Op Fl I Ar highlight
  15. .Op Fl N Ar notify
  16. .Op Fl O Ar open
  17. .Op Fl S Ar bind
  18. .Op Fl T Ns Op Ar timestamp
  19. .Op Fl a Ar plain
  20. .Op Fl c Ar cert
  21. .Op Fl h Ar host
  22. .Op Fl i Ar ignore
  23. .Op Fl j Ar join
  24. .Op Fl k Ar priv
  25. .Op Fl m Ar mode
  26. .Op Fl n Ar nick
  27. .Op Fl p Ar port
  28. .Op Fl r Ar real
  29. .Op Fl s Ar save
  30. .Op Fl t Ar trust
  31. .Op Fl u Ar user
  32. .Op Fl w Ar pass
  33. .Op Ar config ...
  34. .
  35. .Nm
  36. .Fl o
  37. .Op Fl S Ar bind
  38. .Op Fl h Ar host
  39. .Op Fl p Ar port
  40. .Op Ar config ...
  41. .
  42. .Nm
  43. .Fl g Ar cert
  44. .
  45. .Sh DESCRIPTION
  46. The
  47. .Nm
  48. IRC client
  49. provides a curses interface
  50. for TLS-only
  51. Internet Relay Chat.
  52. The only required option is
  53. .Fl h ,
  54. the host name to connect to.
  55. See
  56. .Sx EXAMPLES
  57. for managing further configuration.
  58. Type
  59. .Ic /help
  60. in
  61. .Nm
  62. to view the list of
  63. .Sx COMMANDS
  64. and
  65. .Sx KEY BINDINGS .
  66. .
  67. .Pp
  68. Options can be loaded from files
  69. listed on the command line.
  70. Files are searched for in
  71. .Pa $XDG_CONFIG_DIRS/catgirl
  72. .Po
  73. usually
  74. .Pa ~/.config/catgirl
  75. .Pc
  76. unless the path starts with
  77. .Ql / ,
  78. .Ql \&./
  79. or
  80. .Ql \&../ .
  81. Files and flags listed later
  82. on the command line
  83. take precedence over
  84. those listed earlier.
  85. .
  86. .Pp
  87. Each option is placed on a line,
  88. and lines beginning with
  89. .Ql #
  90. are ignored.
  91. The options are listed below
  92. following their corresponding flags.
  93. .
  94. .Bl -tag -width Ds
  95. .It Fl C Ar util | Cm copy No = Ar util
  96. Set the utility used by
  97. .Ic /copy .
  98. Subsequent
  99. .Cm copy
  100. options append arguments to
  101. .Ar util .
  102. The URL to copy is provided to
  103. .Ar util
  104. on standard input.
  105. The default is the first available of
  106. .Xr pbcopy 1 ,
  107. .Xr wl-copy 1 ,
  108. .Xr xclip 1 ,
  109. .Xr xsel 1 .
  110. .
  111. .It Fl H Ar seed,bound | Cm hash No = Ar seed,bound
  112. Set the initial seed
  113. of the nick and channel
  114. color hash function
  115. and the maximum IRC color value
  116. produced by the function.
  117. The default is 0,75.
  118. To use only colors from
  119. the 16-color terminal set,
  120. use 0,15.
  121. To disable nick and channel colors,
  122. use 0,0.
  123. .
  124. .It Fl I Ar pattern | Cm highlight No = Ar pattern
  125. Add a case-insensitive message highlight pattern,
  126. which may contain
  127. .Ql * ,
  128. .Ql \&?
  129. and
  130. .Ql []
  131. wildcards as in
  132. .Xr glob 7 .
  133. The format of the pattern is as follows:
  134. .Bd -ragged -offset indent
  135. .Ar nick Ns Op Ar !user@host Op Ar command Op Ar channel Op Ar message
  136. .Ed
  137. .Pp
  138. The commands which can be matched are:
  139. .Sy INVITE ,
  140. .Sy JOIN ,
  141. .Sy NICK ,
  142. .Sy NOTICE ,
  143. .Sy PART ,
  144. .Sy PRIVMSG ,
  145. .Sy QUIT ,
  146. .Sy SETNAME .
  147. .
  148. .It Fl K | Cm kiosk
  149. Disable the
  150. .Ic /copy ,
  151. .Ic /debug ,
  152. .Ic /exec ,
  153. .Ic /join ,
  154. .Ic /list ,
  155. .Ic /msg ,
  156. .Ic /open ,
  157. .Ic /part ,
  158. .Ic /query ,
  159. .Ic /quote
  160. commands.
  161. Replace the username
  162. with a hash of its original value.
  163. .
  164. .It Fl N Ar util | Cm notify No = Ar util
  165. Send notifications using a utility.
  166. Subsequent
  167. .Cm notify
  168. options append arguments to
  169. .Ar util .
  170. The window name and message
  171. are provided to
  172. .Ar util
  173. as two additional arguments,
  174. appropriate for
  175. .Xr notify-send 1 .
  176. .
  177. .It Fl O Ar util | Cm open No = Ar util
  178. Set the utility used by
  179. .Ic /open .
  180. Subsequent
  181. .Cm open
  182. options append arguments to
  183. .Ar util .
  184. The URL to open is provided to
  185. .Ar util
  186. as an argument.
  187. The default is the first available of
  188. .Xr open 1 ,
  189. .Xr xdg-open 1 .
  190. .
  191. .It Fl R | Cm restrict
  192. Disable the
  193. .Ic /copy ,
  194. .Ic /exec
  195. and
  196. .Ic /open
  197. commands,
  198. the
  199. .Cm notify
  200. option,
  201. and viewing this manual with
  202. .Ic /help .
  203. .
  204. .It Fl S Ar host | Cm bind No = Ar host
  205. Bind to source address
  206. .Ar host
  207. when connecting to the server.
  208. .
  209. .It Fl T Ns Oo Ar format Oc | Cm timestamp Op = Ar format
  210. Show timestamps by default,
  211. in the specified
  212. .Xr strftime 3
  213. .Ar format .
  214. The format string may contain
  215. raw IRC formatting codes.
  216. The default format is
  217. .Qq \&%X .
  218. .
  219. .It Fl a Ar user : Ns Ar pass | Cm sasl-plain No = Ar user : Ns Ar pass
  220. Authenticate as
  221. .Ar user
  222. with
  223. .Ar pass
  224. using SASL PLAIN.
  225. Leave
  226. .Ar pass
  227. blank to prompt for the password.
  228. .
  229. .It Fl c Ar path | Cm cert No = Ar path
  230. Load the TLS client certificate from
  231. .Ar path .
  232. The
  233. .Ar path
  234. is searched for in the same manner
  235. as configuration files.
  236. If the private key is in a separate file,
  237. it is loaded with
  238. .Cm priv .
  239. With
  240. .Cm sasl-external ,
  241. authenticate using SASL EXTERNAL.
  242. Certificates can be generated with
  243. .Fl g .
  244. .
  245. .It Fl e | Cm sasl-external
  246. Authenticate using SASL EXTERNAL,
  247. also known as CertFP.
  248. The TLS client certificate is loaded with
  249. .Cm cert .
  250. See
  251. .Sx Configuring CertFP .
  252. .
  253. .It Fl g Ar path
  254. Generate a TLS client certificate using
  255. .Xr openssl 1
  256. and write it to
  257. .Ar path .
  258. .
  259. .It Fl h Ar host | Cm host No = Ar host
  260. Connect to
  261. .Ar host .
  262. .
  263. .It Fl i Ar pattern | Cm ignore No = Ar pattern
  264. Add a case-insensitive message ignore pattern,
  265. which may contain
  266. .Ql * ,
  267. .Ql \&?
  268. and
  269. .Ql []
  270. wildcards as in
  271. .Xr glob 7 .
  272. The format of the pattern is as follows:
  273. .Bd -ragged -offset indent
  274. .Ar nick Ns Op Ar !user@host Op Ar command Op Ar channel Op Ar message
  275. .Ed
  276. .Pp
  277. The commands which can be matched are:
  278. .Sy INVITE ,
  279. .Sy JOIN ,
  280. .Sy NICK ,
  281. .Sy NOTICE ,
  282. .Sy PART ,
  283. .Sy PRIVMSG ,
  284. .Sy QUIT ,
  285. .Sy SETNAME .
  286. .
  287. .It Fl j Ar channels Oo Ar keys Oc | Cm join No = Ar channels Oo Ar keys Oc
  288. Join the comma-separated list of
  289. .Ar channels
  290. with the optional comma-separated list of channel
  291. .Ar keys .
  292. .
  293. .It Fl k Ar path | Cm priv No = Ar priv
  294. Load the TLS client private key from
  295. .Ar path .
  296. The
  297. .Ar path
  298. is searched for in the same manner
  299. as configuration files.
  300. .
  301. .It Fl l | Cm log
  302. Log chat events to files in paths
  303. .Pa $XDG_DATA_HOME/catgirl/log/network/channel/YYYY-MM-DD.log .
  304. .
  305. .It Fl m Ar mode | Cm mode No = Ar mode
  306. Set the user
  307. .Ar mode .
  308. .
  309. .It Fl n Ar nick | Cm nick No = Ar nick
  310. Set nickname to
  311. .Ar nick .
  312. The default nickname is
  313. the value of the environment variable
  314. .Ev USER .
  315. .
  316. .It Fl o
  317. Print the server certificate chain
  318. to standard output in PEM format
  319. and exit.
  320. .
  321. .It Fl p Ar port | Cm port No = Ar port
  322. Connect to
  323. .Ar port .
  324. The default port is 6697.
  325. .
  326. .It Fl q | Cm quiet
  327. Raise the default message visibility threshold
  328. for new windows,
  329. hiding general events
  330. (joins, quits, etc.).
  331. .
  332. .It Fl r Ar real | Cm real No = Ar real
  333. Set realname to
  334. .Ar real .
  335. The default realname is the same as the nickname.
  336. .
  337. .It Fl s Ar name | Cm save No = Ar name
  338. Save and load the contents of windows from
  339. .Ar name
  340. in
  341. .Pa $XDG_DATA_DIRS/catgirl ,
  342. or an absolute or relative path if
  343. .Ar name
  344. starts with
  345. .Ql / ,
  346. .Ql \&./ ,
  347. or
  348. .Ql \&../ .
  349. .
  350. .It Fl t Ar path | Cm trust No = Ar path
  351. Trust the self-signed certificate
  352. loaded from
  353. .Ar path
  354. and disable server name verification.
  355. The
  356. .Ar path
  357. is searched for in the same manner
  358. as configuration files.
  359. See
  360. .Sx Connecting to Servers with Self-signed Certificates .
  361. .
  362. .It Fl u Ar user | Cm user No = Ar user
  363. Set username to
  364. .Ar user .
  365. The default username is the same as the nickname.
  366. .
  367. .It Fl v | Cm debug
  368. Log raw IRC messages to the
  369. .Sy <debug>
  370. window
  371. as well as standard error
  372. if it is not a terminal.
  373. .
  374. .It Fl w Ar pass | Cm pass No = Ar pass
  375. Log in with the server password
  376. .Ar pass .
  377. Leave
  378. .Ar pass
  379. blank to prompt for the password.
  380. .El
  381. .
  382. .Ss Configuring CertFP
  383. .Bl -enum
  384. .It
  385. Generate a new TLS client certificate:
  386. .Bd -literal -offset indent
  387. $ catgirl -g ~/.config/catgirl/example.pem
  388. .Ed
  389. .It
  390. Connect to the server using the certificate:
  391. .Bd -literal -offset indent
  392. cert = example.pem
  393. # or: $ catgirl -c example.pem
  394. .Ed
  395. .It
  396. Identify with services or use
  397. .Cm sasl-plain ,
  398. then add the certificate fingerprint
  399. to your account:
  400. .Bd -literal -offset indent
  401. /ns CERT ADD
  402. .Ed
  403. .It
  404. Enable SASL EXTERNAL
  405. to require successful authentication
  406. when connecting
  407. (not possible on all networks):
  408. .Bd -literal -offset indent
  409. cert = example.pem
  410. sasl-external
  411. # or: $ catgirl -e -c example.pem
  412. .Ed
  413. .El
  414. .
  415. .Ss Connecting to Servers with Self-signed Certificates
  416. .Bl -enum
  417. .It
  418. Connect to the server
  419. and write its certificate to a file:
  420. .Bd -literal -offset indent
  421. $ catgirl -o -h irc.example.org > ~/.config/catgirl/example.pem
  422. .Ed
  423. .It
  424. Configure
  425. .Nm
  426. to trust the certificate:
  427. .Bd -literal -offset indent
  428. trust = example.pem
  429. # or: $ catgirl -t example.pem
  430. .Ed
  431. .El
  432. .
  433. .Sh INTERFACE
  434. The
  435. .Nm
  436. interface is split
  437. into three areas.
  438. .
  439. .Ss Status Line
  440. The top line of the terminal
  441. shows window statuses.
  442. Only the currently active window
  443. and windows with activity are listed.
  444. The status line for a window
  445. might look like this:
  446. .Bd -literal -offset indent
  447. 1+ #ascii.town +3 ~7 @
  448. .Ed
  449. .Pp
  450. The number on the left
  451. is the window number.
  452. Following it may be one of
  453. .Ql - ,
  454. .Ql + ,
  455. .Ql ++ ,
  456. as well as
  457. .Ql = .
  458. These indicate
  459. the message visibility threshold
  460. and mute status
  461. of the window.
  462. .Pp
  463. On the right side,
  464. the number following
  465. .Ql +
  466. indicates the number of unread messages.
  467. The number following
  468. .Ql ~
  469. indicates how many lines
  470. are below the scroll position.
  471. An
  472. .Ql @
  473. indicates that there is unsent input
  474. in the window's
  475. .Sx Input Line .
  476. .Pp
  477. .Nm
  478. will also set the terminal title,
  479. if possible,
  480. to the name of the network
  481. and active window,
  482. followed by the unread count
  483. for that window,
  484. and the unread count
  485. for all other windows
  486. in parentheses.
  487. .
  488. .Ss Chat Area
  489. The chat area shows
  490. messages and events.
  491. Regular messages are shown
  492. with the nick between
  493. .Ql <>
  494. angle brackets.
  495. Actions are shown
  496. with the nick preceded by
  497. .Ql * .
  498. Notices are shown
  499. with the nick between
  500. .Ql -
  501. hyphens.
  502. .Pp
  503. Blank lines are inserted into the chat
  504. as unread markers.
  505. .Pp
  506. While scrolling,
  507. the most recent 5 lines of chat
  508. are kept visible below a marker line.
  509. .
  510. .Ss Input Line
  511. The bottom line of the terminal
  512. is where messages and commands are entered.
  513. When entering a message, action or notice,
  514. your nick appears on the left,
  515. as it would in the
  516. .Sx Chat Area .
  517. When entering a command,
  518. no nick is shown.
  519. .Pp
  520. Formatting codes are shown
  521. in the input line
  522. as reverse-video uppercase letters.
  523. These will not appear in the sent message.
  524. .Pp
  525. Input that is too long
  526. to send as a single message
  527. will have a red background
  528. starting at the point where it will be split
  529. into a second message.
  530. .
  531. .Sh COMMANDS
  532. Any unique prefix can be used to abbreviate a command.
  533. For example,
  534. .Ic /join
  535. can be typed
  536. .Ic /j .
  537. .
  538. .Ss Chat Commands
  539. .Bl -tag -width Ds
  540. .It Ic /away Op Ar message
  541. Set or clear your away status.
  542. .It Ic /cs Ar command
  543. Send a command to ChanServ.
  544. .It Ic /invite Ar nick
  545. Invite a user to the channel.
  546. .It Ic /join Op Ar channel Op Ar key
  547. Join the named channel,
  548. the current channel,
  549. or the channel you've been invited to.
  550. .It Ic /list Op Ar channel
  551. List channels.
  552. .It Ic /me Op Ar action
  553. Send an action message.
  554. .It Ic /msg Ar nick message
  555. Send a private message.
  556. .It Ic /names
  557. List users in the channel.
  558. .It Ic /nick Ar nick
  559. Change nicknames.
  560. .It Ic /notice Ar message
  561. Send a notice.
  562. .It Ic /ns Ar command
  563. Send a command to NickServ.
  564. .It Ic /ops
  565. List channel operators.
  566. .It Ic /part Op Ar message
  567. Leave the channel.
  568. .It Ic /query Ar nick
  569. Start a private conversation.
  570. .It Ic /quit Op Ar message
  571. Quit IRC.
  572. .It Ic /quote Ar command
  573. Send a raw IRC command.
  574. The
  575. .Ic /debug
  576. command is likely needed
  577. for command output.
  578. .It Ic /say Ar message
  579. Send a regular message.
  580. .It Ic /setname Ar name
  581. Update realname
  582. if supported by the server.
  583. .It Ic /topic Op Ar topic
  584. Show or set the topic of the channel.
  585. Press
  586. .Ic Tab
  587. twice to copy the current topic.
  588. .It Ic /whois Op Ar nick
  589. Query information about a user or yourself.
  590. .It Ic /whowas Ar nick
  591. Query past information about a user.
  592. .El
  593. .
  594. .Ss UI Commands
  595. .Bl -tag -width Ds
  596. .It Ic /close Op Ar name | num
  597. Close the named, numbered or current window.
  598. .It Ic /copy Op Ar nick | substring
  599. Copy the most recent URL from
  600. .Ar nick
  601. or matching
  602. .Ar substring .
  603. .It Ic /debug
  604. Toggle logging in the
  605. .Sy <debug>
  606. window.
  607. .It Ic /exec Ar command
  608. Run
  609. .Ar command
  610. with
  611. .Ev SHELL
  612. and interpret its output
  613. as input to the current window,
  614. including as commands.
  615. .It Ic /help
  616. View this manual.
  617. Type
  618. .Ic q
  619. to return to
  620. .Nm .
  621. .It Ic /help Ar topic
  622. List the server help for a topic.
  623. Try
  624. .Ic /help index
  625. for a list of topics.
  626. .It Ic /highlight Op Ar pattern
  627. List message highlight patterns
  628. or temporarily add a pattern.
  629. To permanently add a pattern,
  630. use the
  631. .Cm highlight
  632. option.
  633. .It Ic /ignore Op Ar pattern
  634. List message ignore patterns
  635. or temporarily add a pattern.
  636. To permanently add a pattern,
  637. use the
  638. .Cm ignore
  639. option.
  640. .It Ic /move Oo Ar name Oc Ar num
  641. Move the named or current window to number.
  642. .It Ic /open Op Ar count
  643. Open each of
  644. .Ar count
  645. most recent URLs.
  646. .It Ic /open Ar nick | substring
  647. Open the most recent URL from
  648. .Ar nick
  649. or matching
  650. .Ar substring .
  651. .It Ic /unhighlight Ar pattern
  652. Temporarily remove a message highlight pattern.
  653. .It Ic /unignore Ar pattern
  654. Temporarily remove a message ignore pattern.
  655. .It Ic /window
  656. List all windows.
  657. .It Ic /window Ar name | substring
  658. Switch to window by name
  659. or matching substring.
  660. .It Ic /window Ar num | Ic / Ns Ar num
  661. Switch to window by number.
  662. .El
  663. .
  664. .Ss Operator Commands
  665. .Bl -tag -width Ds
  666. .It Ic /ban Op Ar mask ...
  667. List or ban masks from the channel.
  668. .It Ic /deop Op Ar nick ...
  669. Revoke channel operator status from users or yourself.
  670. .It Ic /devoice Op Ar nick ...
  671. Revoke voice from users or yourself in the channel.
  672. .It Ic /except Op Ar mask ...
  673. List or add masks to the channel ban exception list.
  674. .It Ic /invex Op Ar mask ...
  675. List or add masks to the channel invite list.
  676. .It Ic /kick Ar nick Op Ar message
  677. Kick a user from the channel.
  678. .It Ic /mode Oo Ar modes Oc Op Ar param ...
  679. Show or set channel modes.
  680. In the
  681. .Sy <network>
  682. window,
  683. show or set user modes.
  684. .It Ic /op Op Ar nick ...
  685. Grant users or yourself channel operator status.
  686. .It Ic /unban Ar mask ...
  687. Unban masks from the channel.
  688. .It Ic /unexcept Ar mask ...
  689. Remove masks from the channel ban exception list.
  690. .It Ic /uninvex Ar mask ...
  691. Remove masks from the channel invite list.
  692. .It Ic /voice Op Ar nick ...
  693. Grant users or yourself voice in the channel.
  694. .El
  695. .
  696. .Sh KEY BINDINGS
  697. The
  698. .Nm
  699. interface provides
  700. .Xr emacs 1 Ns -like
  701. line editing
  702. as well as keys for IRC formatting.
  703. The prefixes
  704. .Ic C-
  705. and
  706. .Ic M-
  707. represent the control and meta (alt)
  708. modifiers, respectively.
  709. .
  710. .Ss Line Editing
  711. .Bl -tag -width Ds -compact
  712. .It Ic C-a
  713. Move to beginning of line.
  714. .It Ic C-b
  715. Move left.
  716. .It Ic C-d
  717. Delete next character.
  718. .It Ic C-e
  719. Move to end of line.
  720. .It Ic C-f
  721. Move right.
  722. .It Ic C-k
  723. Delete to end of line.
  724. .It Ic C-t
  725. Transpose characters.
  726. .It Ic C-u
  727. Delete to beginning of line.
  728. .It Ic C-w
  729. Delete previous word.
  730. .It Ic C-x
  731. Expand a text macro beginning with
  732. .Ql \e .
  733. .It Ic C-y
  734. Paste previously deleted text.
  735. .It Ic M-Enter
  736. Insert a newline without sending a command.
  737. .It Ic M-b
  738. Move to previous word.
  739. .It Ic M-d
  740. Delete next word.
  741. .It Ic M-f
  742. Move to next word.
  743. .It Ic M-q
  744. Collapse all whitespace.
  745. .It Ic Tab
  746. Complete nick, channel, command or macro.
  747. .El
  748. .Pp
  749. Arrow and navigation keys
  750. also work as expected.
  751. .
  752. .Ss Window Keys
  753. .Bl -tag -width Ds -compact
  754. .It Ic C-l
  755. Redraw the UI.
  756. .It Ic C-n
  757. Switch to next window.
  758. .It Ic C-p
  759. Switch to previous window.
  760. .It Ic C-r
  761. Scroll to previous line matching input.
  762. .It Ic C-s
  763. Scroll to next line matching input.
  764. .It Ic C-v
  765. Scroll down a page.
  766. .It Ic M-+
  767. Raise message visibility threshold,
  768. hiding ignored messages,
  769. general events
  770. (joins, quits, etc.),
  771. or non-highlighted messages.
  772. .It Ic M--
  773. Lower message visibility threshold,
  774. showing ignored messages.
  775. .It Ic M-=
  776. Toggle mute.
  777. Muted windows do not appear in the status line
  778. unless you are mentioned.
  779. .It Ic M-/
  780. Switch to previously selected window.
  781. .It Ic M-<
  782. Scroll to top.
  783. .It Ic M->
  784. Scroll to bottom.
  785. .It Ic M- Ns Ar n
  786. Switch to window by number 0\(en9.
  787. .It Ic M-a
  788. Cycle through unread windows.
  789. .It Ic M-l
  790. List the contents of the window
  791. without word-wrapping
  792. and with timestamps.
  793. Press
  794. .Ic Enter
  795. to return to
  796. .Nm .
  797. .It Ic M-m
  798. Insert a blank line in the window.
  799. .It Ic M-n
  800. Scroll to next highlight.
  801. .It Ic M-p
  802. Scroll to previous highlight.
  803. .It Ic M-s
  804. Reveal spoiler text.
  805. .It Ic M-t
  806. Toggle timestamps.
  807. .It Ic M-u
  808. Scroll to first unread line.
  809. .It Ic M-v
  810. Scroll up a page.
  811. .El
  812. .
  813. .Ss IRC Formatting
  814. .Bl -tag -width "C-z C-v" -compact
  815. .It Ic C-z C-v
  816. Insert the next input character literally.
  817. .It Ic C-z b
  818. Toggle bold.
  819. .It Ic C-z c
  820. Set or reset color.
  821. .It Ic C-z i
  822. Toggle italics.
  823. .It Ic C-z o
  824. Reset formatting.
  825. .It Ic C-z p
  826. Manually toggle paste mode.
  827. .It Ic C-z r
  828. Toggle reverse color.
  829. .It Ic C-z s
  830. Set spoiler text (black on black).
  831. .It Ic C-z u
  832. Toggle underline.
  833. .El
  834. .
  835. .Pp
  836. Some color codes can be inserted
  837. with the following:
  838. .Bl -column "C-z A" "magenta" "C-z N" "orange (dark yellow)"
  839. .It Ic C-z A Ta gray Ta Ic C-z N Ta brown (dark red)
  840. .It Ic C-z B Ta blue Ta Ic C-z O Ta orange (dark yellow)
  841. .It Ic C-z C Ta cyan Ta Ic C-z P Ta pink (light magenta)
  842. .It Ic C-z G Ta green Ta Ic C-z R Ta red
  843. .It Ic C-z K Ta black Ta Ic C-z W Ta white
  844. .It Ic C-z M Ta magenta Ta Ic C-z Y Ta yellow
  845. .El
  846. .
  847. .Pp
  848. To set other colors, follow
  849. .Ic C-z c
  850. by one or two digits for the foreground color,
  851. optionally followed by a comma
  852. and one or two digits for the background color.
  853. To reset color, follow
  854. .Ic C-z c
  855. by a non-digit.
  856. .
  857. .Pp
  858. The color numbers are as follows:
  859. .Bl -column "99" "orange (dark yellow)" "15" "pink (light magenta)"
  860. .It \ 0 Ta white Ta \ 8 Ta yellow
  861. .It \ 1 Ta black Ta \ 9 Ta light green
  862. .It \ 2 Ta blue Ta 10 Ta cyan
  863. .It \ 3 Ta green Ta 11 Ta light cyan
  864. .It \ 4 Ta red Ta 12 Ta light blue
  865. .It \ 5 Ta brown (dark red) Ta 13 Ta pink (light magenta)
  866. .It \ 6 Ta magenta Ta 14 Ta gray
  867. .It \ 7 Ta orange (dark yellow) Ta 15 Ta light gray
  868. .It 99 Ta default Ta Ta
  869. .El
  870. .
  871. .Sh ENVIRONMENT
  872. .Bl -tag -width Ds
  873. .It Ev SHELL
  874. The shell used by
  875. .Ic /exec .
  876. The default is
  877. .Pa /bin/sh .
  878. .It Ev USER
  879. The default nickname.
  880. .El
  881. .
  882. .Sh FILES
  883. .Bl -tag -width Ds
  884. .It Pa $XDG_CONFIG_DIRS/catgirl
  885. Configuration files are searched for first in
  886. .Ev $XDG_CONFIG_HOME ,
  887. usually
  888. .Pa ~/.config ,
  889. followed by the colon-separated list of paths
  890. .Ev $XDG_CONFIG_DIRS ,
  891. usually
  892. .Pa /etc/xdg .
  893. .It Pa ~/.config/catgirl
  894. The most likely location of configuration files.
  895. .
  896. .It Pa $XDG_DATA_DIRS/catgirl
  897. Save files are searched for first in
  898. .Ev $XDG_DATA_HOME ,
  899. usually
  900. .Pa ~/.local/share ,
  901. followed by the colon-separated list of paths
  902. .Ev $XDG_DATA_DIRS ,
  903. usually
  904. .Pa /usr/local/share:/usr/share .
  905. .It Pa ~/.local/share/catgirl
  906. The most likely location of save files.
  907. .El
  908. .
  909. .Sh EXIT STATUS
  910. The
  911. .Nm
  912. client exits 0
  913. if requested by the user,
  914. .Dv EX_UNAVAILABLE
  915. (69)
  916. if the connection is lost,
  917. and >0 if any other error occurs.
  918. .
  919. .Sh EXAMPLES
  920. Join
  921. .Li #ascii.town
  922. from the command line:
  923. .Bd -literal -offset indent
  924. $ catgirl -h irc.tilde.chat -j '#ascii.town'
  925. .Ed
  926. .Pp
  927. Create a configuration file in
  928. .Pa ~/.config/catgirl/tilde :
  929. .Bd -literal -offset indent
  930. host = irc.tilde.chat
  931. join = #ascii.town
  932. .Ed
  933. .Pp
  934. Load the configuration file:
  935. .Bd -literal -offset indent
  936. $ catgirl tilde
  937. .Ed
  938. .
  939. .Sh STANDARDS
  940. .Bl -item
  941. .It
  942. .Rs
  943. .%A Adam
  944. .%A Attila Molnar
  945. .%T IRCv3.2 invite-notify Extension
  946. .%I IRCv3 Working Group
  947. .%U https://ircv3.net/specs/extensions/invite-notify-3.2
  948. .Re
  949. .It
  950. .Rs
  951. .%A Jack Allnutt
  952. .%T Modern IRC Client Protocol
  953. .%I ircdocs
  954. .%U https://modern.ircdocs.horse/index.html
  955. .Re
  956. .It
  957. .Rs
  958. .%A Kiyoshi Aman
  959. .%A Kyle Fuller
  960. .%A St\('ephan Kochen
  961. .%A Alexey Sokolov
  962. .%A James Wheare
  963. .%T IRCv3 Message Tags
  964. .%I IRCv3 Working Group
  965. .%U https://ircv3.net/specs/extensions/message-tags
  966. .Re
  967. .It
  968. .Rs
  969. .%A Kiyoshi Aman
  970. .%T IRCv3.1 extended-join Extension
  971. .%I IRCv3 Working Group
  972. .%U https://ircv3.net/specs/extensions/extended-join-3.1
  973. .Re
  974. .It
  975. .Rs
  976. .%A Waldo Bastian
  977. .%A Ryan Lortie
  978. .%A Lennart Poettering
  979. .%T XDG Base Directory Specification
  980. .%U https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
  981. .%D November 24, 2010
  982. .Re
  983. .It
  984. .Rs
  985. .%A Christine Dodrill
  986. .%T IRCv3.2 chghost Extension
  987. .%I IRCv3 Working Group
  988. .%U https://ircv3.net/specs/extensions/chghost-3.2
  989. .Re
  990. .It
  991. .Rs
  992. .%A Kyle Fuller
  993. .%A St\('ephan Kochen
  994. .%A Alexey Sokolov
  995. .%A James Wheare
  996. .%T IRCv3.2 server-time Extension
  997. .%I IRCv3 Working Group
  998. .%U https://ircv3.net/specs/extensions/server-time-3.2
  999. .Re
  1000. .It
  1001. .Rs
  1002. .%A Lee Hardy
  1003. .%A Perry Lorier
  1004. .%A Kevin L. Mitchell
  1005. .%A William Pitcock
  1006. .%T IRCv3.1 Client Capability Negotiation
  1007. .%I IRCv3 Working Group
  1008. .%U https://ircv3.net/specs/core/capability-negotiation-3.1.html
  1009. .Re
  1010. .It
  1011. .Rs
  1012. .%A S. Josefsson
  1013. .%T The Base16, Base32, and Base64 Data Encodings
  1014. .%I IETF
  1015. .%R RFC 4648
  1016. .%U https://tools.ietf.org/html/rfc4648
  1017. .%D October 2006
  1018. .Re
  1019. .It
  1020. .Rs
  1021. .%A C. Kalt
  1022. .%T Internet Relay Chat: Client Protocol
  1023. .%I IETF
  1024. .%R RFC 2812
  1025. .%U https://tools.ietf.org/html/rfc2812
  1026. .%D April 2000
  1027. .Re
  1028. .It
  1029. .Rs
  1030. .%A Janne Mareike Koschinski
  1031. .%T IRCv3 setname Extension
  1032. .%I IRCv3 Working Group
  1033. .%U https://ircv3.net/specs/extensions/setname
  1034. .Re
  1035. .It
  1036. .Rs
  1037. .%A Mantas Mikul\[u0117]nas
  1038. .%T IRCv3.2 userhost-in-names Extension
  1039. .%I IRCv3 Working Group
  1040. .%U https://ircv3.net/specs/extensions/userhost-in-names-3.2
  1041. .Re
  1042. .It
  1043. .Rs
  1044. .%A Daniel Oaks
  1045. .%T Standard Replies Extension
  1046. .%I IRCv3 Working Group
  1047. .%U https://ircv3.net/specs/extensions/standard-replies
  1048. .Re
  1049. .It
  1050. .Rs
  1051. .%A Daniel Oaks
  1052. .%T IRC Formatting
  1053. .%I ircdocs
  1054. .%U https://modern.ircdocs.horse/formatting.html
  1055. .Re
  1056. .It
  1057. .Rs
  1058. .%A J. Oikarinen
  1059. .%A D. Reed
  1060. .%T Internet Relay Chat Protocol
  1061. .%I IETF
  1062. .%R RFC 1459
  1063. .%U https://tools.ietf.org/html/rfc1459
  1064. .%D May 1993
  1065. .Re
  1066. .It
  1067. .Rs
  1068. .%A William Pitcock
  1069. .%A Jilles Tjoelker
  1070. .%T IRCv3.1 SASL Authentication
  1071. .%I IRCv3 Working Group
  1072. .%U https://ircv3.net/specs/extensions/sasl-3.1.html
  1073. .Re
  1074. .It
  1075. .Rs
  1076. .%A William Pitcock
  1077. .%T IRCv3.1 multi-prefix Extension
  1078. .%I IRCv3 Working Group
  1079. .%U https://ircv3.net/specs/extensions/multi-prefix-3.1
  1080. .Re
  1081. .It
  1082. .Rs
  1083. .%A James Wheare
  1084. .%T Reply Client Tag
  1085. .%I IRCv3 Working Group
  1086. .%U https://ircv3.net/specs/client-tags/reply
  1087. .Re
  1088. .It
  1089. .Rs
  1090. .%A James Wheare
  1091. .%T Message IDs
  1092. .%I IRCv3 Working Group
  1093. .%U https://ircv3.net/specs/extensions/message-ids
  1094. .Re
  1095. .It
  1096. .Rs
  1097. .%A K. Zeilenga, Ed.
  1098. .%T The PLAIN Simple Authentication and Security Layer (SASL) Mechanism
  1099. .%I IETF
  1100. .%R RFC 4616
  1101. .%U https://tools.ietf.org/html/rfc4616
  1102. .%D August 2006
  1103. .Re
  1104. .El
  1105. .
  1106. .Ss Extensions
  1107. The
  1108. .Nm
  1109. client implements the
  1110. .Sy causal.agency/consumer
  1111. vendor-specific IRCv3 capability
  1112. offered by
  1113. .Xr pounce 1 .
  1114. The consumer position is stored in the
  1115. .Cm save
  1116. file.
  1117. .
  1118. .Sh AUTHORS
  1119. .An June Bug Aq Mt june@causal.agency
  1120. .
  1121. .Sh BUGS
  1122. Send mail to
  1123. .Aq Mt list+catgirl@causal.agency
  1124. or join
  1125. .Li #ascii.town
  1126. on
  1127. .Li irc.tilde.chat .