`-,==;
                                           `-.==`/
                                            ,/ ,/
                      .-========-__._-=''```¯¯¯¯¯`'.
                       ¯¯¯¯¯¯¯¯`'=.,^~__,,_====-.   `.
                                  '===:'¯ . .'   ;   |
                                       ¯'=,'   -'    |
                                           ¯'=,     /
                          A c h l y s          )   (
                                               | -=.'._,
                                               \  (x /¯
                                                '---'

                             brought to you by the

................................................................................
...............-'`'`-..................................irc.krustykrab.restaurant
.............(..THE...).........................................................
............(..KRUSTY..)................*................*......................
......*......\..KRAB../....___....._....|............____.......................
..............\ \__/ /...,',-.`___|_|___|__________,',,-.\......................
...............-\__/--../ /_____:|:_______________/ //\/\\\..........*..........
......._  .----__==;-../ /__.-._________:|:_.-.--/ //\/\/\||....................
......'-.^-^-^'_,-'|..| |   '-' [_] [_] [_] '-' | ||\/\/\/||....................
.........`----'....|..| |--------_________------| ||/\/\/\||....................
...................|..| | [_=_] |    |    |  / /| ||\/\/\/||....................
...................|..| |  / /  |    |    | / / | ||/\/\/\||.........*..........
.........*.........|..| | / /   |   '|'   |/ /  | ||\/\/\/||....................
...................|.,+-'------.+|   |   _|_____|_||_.----''|...................
- ----------------,|-|_________|.'------|________|___.-----'--.-----------------
.................'-|__________           ___==>_____________--'.................
............................./          /....|..................................
____________________________/          /________________________________________


Impatient?
    Visit https://git.volatile.bz/wowaname/achlys and check out the source
for yourself.

What is achlys?
	It's a chat program. Its model resembles that of ZNC, where one or more
clients may connect to one or more "bouncers" or daemons as we call them. The
client-daemon protocol is built off protobuf, such as to make the protocol
grammar structured, unambiguous, and featureful.
	The actual client UI is line-based like a shell (or like the IRC clients
ii/sic, or eggdrop partyline, et cetera) and as such it is entirely
command-based, not focused on windowed UI or a selection of key bindings. This
will likely catch seasoned irssi or weechat users off-guard, and it may feel a
bit too restricted even for old-school ircII users.

Why these design choices?
	Let me start by saying this client is designed solely by me, for me. I do
not take into account other people's use cases that much, although I do try to
remain flexible in design where it makes sense.
	The client/daemon model is easiest to explain. Lots of people already use a
bouncer such as ZNC, some use weechat's relay plugin, others run a client under
a screen or tmux session and connect over SSH. These are all hacks in one way or
another; building a client and a daemon that are meant to be together seems like
the best solution. For those who don't need a bouncer-style setup, achlys can
spawn the daemon silently when you open the client and connect over a UNIX
socket. That way, you still get the added benefits from code separation; you can
relaunch the client without losing your connections on the daemon.
	Separate client/daemon programs also allow for easier support for other
protocols. Achlys is "a chat program", meaning any chat protocol with an open
specification can be used with achlys. This includes (for my personal use) IRC,
XMPP, Discord, Matrix.org, and whatever else I happen to use. Just fire up a
separate daemon for each protocol and connect your client to all of them. No
more need for Pidgin or bitlbee.
	The UI choice is likely more difficult to grasp. I normally idle in a lot of
IRC channels (upwards of 100) so I consider myself a power user. Throw a few
XMPP chats with friends and a couple Discord servers on top of that, and I have
a lot to manage. I only want messages I'm interested in, though, and I don't
want to have to shuffle between windows every time I see new activity. The
client should do this for me. Because of this, having everything in one window
makes sense. And in that window I can filter using rules such as:
	* messages mentioning me: they're about me so they must be important,
	* messages mentioning a particular subject or pattern of interest,
	* private messages from my friends: I always want to see those,
	* a few "favourite" channels that I always participate in: usually they're
	  low-traffic enough where I can comfortably follow the conversation,
	* some other key events such as if I get banned from a channel.
We all deal with spam, too. On top of those basic filters, I can add more:
	* if I receive too many mentions, temporarily condense them and just tell me
	  how many lines I'm missing,
	* I can block all unknown PMs -- think umode +g on IRC but better, because I
	  can easily view the PMs I missed if I later decide to accept the user,
	* if a channel gets too noisy, or if I'm just tired of talking somewhere, I
	  can mute that for a while as well.
For people used to windowed layout (or whenever you want to focus on one
specific chat and tune everything else out), you can also filter messages based
on your active channel or query. That way you can `/go #channel` just like you
would in other clients and it wouldn't feel too different from what you're used
to.

Isn't this a step back from windowed clients still?
	Achlys aims to support modern standards: 256-colour support, OTR, OMEMO,
IRCv3, TLS, SASL, and whatever else I can think of adding (or whatever you add
for yourself). I believe windowed clients are a step back from peak efficiency,
and it took me years of dealing with windows and buffers to figure this out.
Also, you will benefit from smart tab-completion, partial command completion,
and other handy time-saving features.
	Other "power" features (mostly for IRC) include advanced scripting support,
support for multiple connections per network (useful to replace Wraith to
maintain your channel, or to bypass flood / channel membership limitations, or
whatever suits your fancy), support for proxies and proxy lists, and inline
scripting with consistent syntax (in fact, every message you send is interpreted
through this scripting).

I want to switch. What's the same and what's different than what I'm used to?
	First of all, get accustomed to the `/help` command. Run it before you do
anything else and you'll already get a feel for things.
	If you've had enough of achlys, type `/exit`. This will not ask you for
confirmation and will only shut down the client, not the daemon (by default).
`/quit` is an entirely different command, so don't confuse the two.