psycion - a curses-based native PSYC communications client
Usage: psycion [--help] [-c configfile] [-l UNI] [-w password] [-s]
-l UNI link to a specific PSYC uniform network identity -d N Use debugging level N for Net::PSYC. Both 1 and 2 are insane values. All output is written to STDERR. -D N Use debugging level N for Net::PSYC. Output is written to psycion's status window. -s dont use color codes -m start in multi-window mode. ( requires Curses ) --help -h display this message
Commands may be used to control almost every aspect of psycions behaviour. Even cursor movement. Commands may be bound to keys or typed into the prompt. Obviously typing them does not make sense for some of the commands. When typing, commands have to be preceded with a '/'. For how to use commands in key bindings, look at the CONFIGURATION section below.
Activate the mode <mode>. <mode> may be an arbitrary character string. Modes are used to implement complex command sets. Read the documentation about Key Bindings for more information.
Say <text> in the current room/private chat.
Join a <room>.
Leave the current room.
Try to logout of your PSYC server. This fails if the connection got lost.
Switch to the next window.
Switch to the previous window.
Clear the current window. Removes all messages.
The behaviour of psycion is defined by configuration files. There is no default configuration inside the source code, but rather a set of configuration files that should give one a reasonable good start. From there on its up to you to adapt the configuration to your needs.
There are different ways to change the colors in which your chat-content is displayed. The first is to set a color for a message class, the second to change the color for a certain variable inside a message. The third and last way is to change the color in which a character string matching a pattern is displayed.
In PSYC every message belongs to a message class. A message typed by a user, for instance, has the message class '_message' or a subclass derived from that, such as '_message_public' (a public message in a room). If you set a certain color for a message class it will be used for every subclass aswell, unless there is a color definition for that subclass.
Examples of color definitions for message classes:
mark method _message_public white mark method _message_private red bold mark method _message_public_question yellow mark method _error red on_white
The same rules of how classes and subclasses are treated ( keyword inheritance ) applies to variables aswell.
Examples of color definitions for variable classes:
mark variable _nick bold white mark variable _nick_alias blue mark variable _nick_place white on_red mark variable _action green
Color definitions for arbitrary character strings use Perl Regular Expressions. In case you are not familiar with Regular Expressions, look at Perl's documentation on that.
Examples:
mark ignorecase theboss red bold # match 'theboss' case-insensitive mark case TheBoss blue # match 'TheBoss' case-sensitive mark case \d+ yellow # match any digit character and show it in yellow mark case _\w+ red on_white # match psyc keywords and display them as red text on white background
All commands ( have a look at the COMMANDS section above ) may be bound to keys. The general syntax is:
bind <key> command bind <key> command(arg1, arg2, ..) bind <mode>::<key> command bind <mode>::<key> command(arg1, arg2, ..)
Modes may be used to implement a different set of commands. Have a look at the example of the mode below for scrolling windows. When <mode> is active <key> is bound to command(). Modes can be activated by mode(<mode>).
Examples:
bind <C-o> say("Oink!") # Say Oink! on hitting control-o inside the current window ( either # a room or a private chat ) bind <^o> say("Oink!") # the same bind <C-O> join("pentagon") # join the room pentagon when hitting control-shift-o bind <alt-shift-n> next-window # change to the next window when hitting alt-shift-n # scrolling mode # activate the SCROLL mode bind <c-w> mode(SCROLL) bind SCROLL::<Left> forward-window bind SCROLL::<Right> backward-window # deactivate the SCROLL mode bind SCROLL::<esc> mode # maybe it's a good IDEA if ESC is always mapped to leave any mode # at least by default ...?
It is possible to define templates for message classes.
These examples should give a decent insight:
template _notice_place_enter [_nick] walks into [_nick_place] and bows to the audience. template _message_private [_nick] tells you: [_data] template _message_echo_private You tell [_nick_target]: [_data]
load <file>
load a configuration file. You may use this to split up your configuration into different files. <file> may either be a full path ( preceded by a dash ) or a relative path ( relative to the configuration file it is to be included into ).
complete <word>
Add <word> to the list of words used in auto-completion. Have a look at complete() in the COMMANDS section above.
alias <alias> <command>
Add <alias> as an alias for <command>. These aliases will work in the prompt only.
Examples:
alias j join alias r reply
psycion is known to trigger a crash in Perl when used in combination with torsocks. A fix can be expected in Perl versions more recent than July 2016. See https://rt.perl.org/Public/Bug/Display.html?id=128740#txn-1412651 for details.
psycion has been written by Arne Goedeke, with contributions from Carlo v. Loesch and Tobias Josefowitz and many inspirations by those two.
This program is Copyright 2003-2016 by Arne Goedeke. This program is free software; you can redistribute it and/or modify it under the terms of the Perl Artistic License or the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more detail.
If you do not have a copy of the GNU General Public License write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.