Go to file
C. McEnroe 94fb9798c5 Bump ParamCap to 254
Apparently IRCds have decided that the 15-parameter limit doesn't matter
anymore. 254 is the maximum number of single-byte parameters (following
a single-byte command) which fit in a 512-byte CR-LF-terminated line.
When everyone decides that the 512-byte line length limit doesn't matter
either, I will delete my software and people can use some JavaScript
garbage instead.

This makes struct Message 2080 bytes, but there's only ever one or two
of them around at once. Avoid passing it by value to handle.
2020-06-24 13:36:24 -04:00
scripts Replace int opt; while with for loop in sandman 2020-03-31 10:17:21 -04:00
.gitignore Add chroot target 2020-02-11 22:28:39 -05:00
LICENSE Add copy of GPL 2020-02-09 15:25:28 -05:00
Makefile Inherit PREFIX and MANDIR from env 2020-05-27 12:01:49 -04:00
README.7 Add OpenBSD to README 2020-06-11 17:49:45 -04:00
catgirl.1 Document /quote needing /debug for output 2020-06-12 15:42:39 -04:00
chat.c Bump ParamCap to 254 2020-06-24 13:36:24 -04:00
chat.h Bump ParamCap to 254 2020-06-24 13:36:24 -04:00
command.c Bump ParamCap to 254 2020-06-24 13:36:24 -04:00
complete.c Add additional permission for linking with LibreSSL 2020-06-08 17:48:07 -04:00
config.c Add additional permission for linking with LibreSSL 2020-06-08 17:48:07 -04:00
configure Add warning to configure script 2020-06-11 16:06:01 -04:00
edit.c Add additional permission for linking with LibreSSL 2020-06-08 17:48:07 -04:00
handle.c Bump ParamCap to 254 2020-06-24 13:36:24 -04:00
ignore.c Add additional permission for linking with LibreSSL 2020-06-08 17:48:07 -04:00
irc.c Bump ParamCap to 254 2020-06-24 13:36:24 -04:00
log.c Add additional permission for linking with LibreSSL 2020-06-08 17:48:07 -04:00
ui.c Call static_assert by _Static_assert 2020-06-11 15:33:59 -04:00
url.c Call static_assert by _Static_assert 2020-06-11 15:33:59 -04:00
xdg.c Add additional permission for linking with LibreSSL 2020-06-08 17:48:07 -04:00

README.7

.Dd June 11, 2020
.Dt README 7
.Os "Causal Agency"
.\" To view this file, run: man ./README.7
.
.Sh NAME
.Nm catgirl
.Nd IRC client
.
.Sh DESCRIPTION
.Xr catgirl 1
is a TLS-only terminal IRC client.
.
.Ss Notable Features
.Bl -bullet
.It
Tab complete:
most recently seen or mentioned nicks
are completed first.
Commas are inserted between multple nicks.
.It
Prompt:
the prompt clearly shows whether input
will be interpreted as a command
or sent as a message.
.It
Split scroll:
keeps the latest messages in view while scrolling.
.It
URL detection:
recent URLs from a particular user
or matching a substring
can be opened or copied.
.It
Nick coloring:
color generation based on usernames
remains stable across nick changes.
Mentions of users in messages are colored.
.It
Ignore:
visibility of filtered messages
can be toggled.
.El
.
.Ss Non-features
.Bl -bullet
.It
Dynamic configuration:
all configuration happens
in a simple text file
or on the command line.
.It
Multi-network:
a terminal multiplexer such as
.Xr screen 1
or
.Xr tmux 1
(or just your regular terminal emulator tabs)
can be used to connect
.Nm
to multiple networks.
.It
Reconnection:
when the connection to the server is lost,
.Nm
exits.
It can be run in a loop
or connected to a bouncer,
such as
.Lk https://git.causal.agency/pounce "pounce" .
.It
CTCP:
apart from
.Sy ACTION ,
this protocol is useless at best
and enables abuse at worst.
.It
Cleartext IRC:
TLS is now ubiquitous
and certificates are easy to obtain.
.El
.
.Sh INSTALLING
.Nm
requires LibreSSL
.Pq Fl ltls
and ncurses
.Pq Fl lncursesw .
It primarily targets
.Fx ,
.Ox
and macOS,
as well as Linux.
The
.Pa configure
step is not necessary on
.Fx
or
.Ox .
On
.Ox ,
additionally set
.Ev MANDIR=/usr/local/man .
.Bd -literal -offset indent
\&./configure
make all
sudo make install PREFIX=/usr/local
.Ed
.
.Pp
If your system installs LibreSSL
in a non-standard path, set
.Ev PKG_CONFIG_PATH
for
.Nm ./configure .
For example,
.Bd -literal -offset indent
PKG_CONFIG_PATH=/opt/libressl/lib/pkgconfig ./configure
.Ed
.
.Pp
If your system is incapable of providing LibreSSL,
consider building it manually and installing to
.Pa /usr/local ,
adding
.Pa /usr/local/lib
to
.Pa /etc/ld.so.conf
and running
.Xr ldconfig 8
if needed.
It may also be necessary to create
.Pa /etc/ssl/cert.pem
as a symbolic link to
.Pa /etc/ssl/certs/ca-certificates.crt
or similar path.
.
.Pp
The
.Nm sandman
wrapper is provided for macOS
to stop and start
.Nm
on system sleep and wake.
Install it as follows:
.Bd -literal -offset indent
make scripts/sandman
sudo make install-sandman
.Ed
.
.Sh FILES
.Bl -tag -width "complete.c" -compact
.It Pa chat.h
global state and declarations
.It Pa chat.c
startup and event loop
.It Pa irc.c
IRC connection and parsing
.It Pa ui.c
curses interface
.It Pa handle.c
IRC message handling
.It Pa command.c
input command handling
.It Pa edit.c
line editing
.It Pa complete.c
tab complete
.It Pa url.c
URL detection
.It Pa ignore.c
message filtering
.It Pa log.c
chat logging
.It Pa config.c
configuration parsing
.It Pa xdg.c
XDG base directories
.El
.
.Pp
.Bl -tag -width "scripts/notify-send.scpt" -compact
.It Pa scripts/sandman.m
sleep/wake wrapper for macOS
.It Pa scripts/notify-send.scpt
.Xr notify-send 1
in AppleScript
.It Pa scripts/chroot-prompt.sh
name prompt wrapper for chroot
.It Pa scripts/chroot-man.sh
.Xr man 1
implementation for chroot
.It Pa scripts/sshd_config
.Xr sshd 8
configuration for public chroot
.El
.
.Sh CONTRIBUTING
The upstream URL of this project is
.Aq Lk https://git.causal.agency/catgirl .
Contributions in any form can be sent to
.Aq Mt list+catgirl@causal.agency .
For sending patches by email, see
.Aq Lk https://git-send-email.io .
.
.Sh SEE ALSO
.Xr catgirl 1
.Pp
IRC bouncer:
.Lk https://git.causal.agency/pounce "pounce"
.
.\" To view this file, run: man ./README.7