Go to file
dzwdz d300e5ad03 He's a catboy now
i literally started this fork only so i could call it "catboy" lmao
2022-03-24 21:01:49 +00:00
scripts He's a catboy now 2022-03-24 21:01:49 +00:00
.gitignore He's a catboy now 2022-03-24 21:01:49 +00:00
LICENSE Add copy of GPL 2020-02-09 15:25:28 -05:00
Makefile He's a catboy now 2022-03-24 21:01:49 +00:00
README.7 He's a catboy now 2022-03-24 21:01:49 +00:00
buffer.c Replace catf with seprintf 2021-06-09 11:56:35 -04:00
catboy.1 He's a catboy now 2022-03-24 21:01:49 +00:00
chat.c He's a catboy now 2022-03-24 21:01:49 +00:00
chat.h Allow plaintext connections with -P 2022-03-24 20:47:38 +00:00
command.c He's a catboy now 2022-03-24 21:01:49 +00:00
compat_readpassphrase.c Copy RPP defines from oconfigure 2022-02-12 13:36:24 -05:00
complete.c Match window substrings case-sensitively 2021-06-17 19:07:56 -04:00
config.c Allow interspersing flags and config files 2021-01-10 13:49:57 -05:00
configure Use compat_readpassphrase.c on Linux 2022-02-12 13:36:24 -05:00
edit.c Skip non-spacing when moving and deleting by "character" 2022-03-16 20:21:00 -04:00
edit.h Clean up unimplemented editing mode stuff 2022-02-20 17:16:21 -05:00
filter.c Ignore messages in reply to previously ignored messages 2021-05-04 15:34:27 -04:00
handle.c Specify commands which depend on caps 2022-02-26 15:51:42 -05:00
input.c Always refresh the screen with ^L 2022-03-09 21:18:05 -05:00
irc.c Allow plaintext connections with -P 2022-03-24 20:47:38 +00:00
log.c Import refactored xdg.c from pounce 2021-10-16 17:03:31 -04:00
ui.c Save input buffer contents 2022-02-20 16:57:11 -05:00
url.c /exec without controlling terminal 2021-06-13 16:46:34 -04:00
window.c Show indicator in status when window has pending input 2022-02-20 14:49:17 -05:00
xdg.c He's a catboy now 2022-03-24 21:01:49 +00:00


.\" To view this file, run: man ./README.7
.Dd February 19, 2022
.Os "Causal Agency"
.Nm catboy
.Nd IRC client
.Xr catboy 1
is a terminal IRC client.
.Ss Notable Features
.Bl -bullet
Tab complete:
most recently seen or mentioned nicks
are completed first.
Commas are inserted between multiple nicks.
the prompt clearly shows whether input
will be interpreted as a command
or sent as a message.
Split scroll:
keeps the latest messages in view while scrolling.
URL detection:
recent URLs from a particular user
or matching a substring
can be opened or copied.
Nick coloring:
color generation based on usernames
remains stable across nick changes.
Mentions of users in messages are colored.
Topic diffing:
the modified portion
of a channel topic change
is highlighted.
visibility of filtered messages
can be toggled.
.Ox ,
.Cm restrict
option enables tight sandboxing.
Sandboxing is always used on
.Ox .
Plaintext support:
It's usually less secure than TLS, but who cares.
.Ss Non-features
.Bl -bullet
Dynamic configuration:
all configuration happens
in a simple text file
or on the command line.
a terminal multiplexer such as
.Xr screen 1
.Xr tmux 1
(or just your regular terminal emulator tabs)
can be used to connect
to multiple networks.
when the connection to the server is lost,
It can be run in a loop
or connected to a bouncer,
such as
.Lk https://git.causal.agency/pounce "pounce" .
apart from
this protocol is useless at best
and enables abuse at worst.
Protocol coverage:
IRCv3 extensions are implemented only
where they contribute to
the intended user experience.
requires ncurses and
.Sy libtls ,
provided by either
.Lk https://git.causal.agency/libretls/about LibreTLS
(for OpenSSL)
or by LibreSSL.
It targets
.Fx ,
.Ox ,
and Linux.
.Sy libtls
may be packaged for your system.
Check the Repology pages for
.Lk https://repology.org/project/catgirl/versions catgirl
.Lk https://repology.org/project/libretls/versions libretls .
.Bd -literal -offset indent
$ ./configure
$ make all
# make install
Packagers are encouraged
to patch in their own text macros in
.Pa input.c .
If installing
.Sy libtls
manually to
.Pa /usr/local ,
for example,
make sure
.Pa /usr/local/lib
appears in
.Pa /etc/ld.so.conf
.Pa /etc/ld.so.conf.d/*
and be sure to run
.Xr ldconfig 8
once the library is installed.
.Nm ./configure
to find it.
.Bd -literal -offset indent
$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
.Nm sandman
wrapper is provided for macOS
to stop and start
on system sleep and wake.
Install it as follows:
.Bd -literal -offset indent
$ make -C scripts sandman
# make -C scripts install
.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 window.c
window management
.It Pa input.c
input handling
.It Pa handle.c
IRC message handling
.It Pa command.c
command handling
.It Pa buffer.c
line wrapping
.It Pa edit.c
line editing
.It Pa complete.c
tab complete
.It Pa url.c
URL detection
.It Pa filter.c
message filtering
.It Pa log.c
chat logging
.It Pa config.c
configuration parsing
.It Pa xdg.c
XDG base directories
.Bl -tag -width "scripts/notify-send.scpt" -compact
.It Pa scripts/chat.tmux.conf
.Xr tmux 1
configuration for multiple networks
and automatic reconnects
.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/build-chroot.sh
chroot builder for
.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
The upstream URL of this fork is
.Aq Lk https://git.tilde.town/catboy .
However, you should instead contribute to the original project, which is hosted at
.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 .
Mailing list archives are available at
.Aq Lk https://causal.agency/list/catgirl.html .
Monetary contributions can be
.Lk https://liberapay.com/june/donate "donated via Liberapay" .
.Xr catboy 1
IRC bouncer:
.Lk https://git.causal.agency/pounce "pounce"
.%A June Bug
.%T IRC Suite
.%U https://text.causal.agency/010-irc-suite.txt
.%D June 19, 2020
.\" To view this file, run: man ./README.7