psycion ...



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 )
 -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.

mode ( <mode> )

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> )

Say <text> in the current room/private chat.

join ( <room> )

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.

Color Settings

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.


    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

Key Bindings

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>).


    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.


    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 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.

[Further information on the perlpsyc main page]