Chat commands

Nicknames

In chat, people are referred to by a nickname. This is usually the username they specified, but if two people have the same name, one of them will have a number stuck on the end to distinguish them. You may also change the nickname to a word of your choosing.

A person will be assigned a nickname if:

Text-only chat

The Circle has a text only interface for chat, which you can use by running

      circle -t

In the text only interface, you can enter the shell by pressing Ctrl-D. Since Ctrl-D will also exits from a shell, you can use it to toggle between shell and circle.

While in the shell running circle -s will display the number of unread messages you have. It will also save your current working directory for the next time you enter the shell. You may find it convenient to add this to your shell prompt:

bash: add the following line to your .bashrc file

      PS1="$PS1\`circle -s\`"

zsh: add the following lines to you .zshrc file

      old_prompt="$prompt"
      precmd() {
        prompt="$old_prompt`circle -s`"
      }

Chat related commands:

These are kind of like IRC commands, and, well, kind of not.

/msg nick/channel[,nick/channel...] message

Send a message to a person or people.

Eg:

      /msg pfh,#arvotea wassup?

/join [+ or -] nick/channel[,nick/channel...]

Treat all non-commands as messages to the list of people or channels.

If a + or - is put in front of the list, respectively add or subtract the people or channels to the list.

Eg:

      /join bob,tony,#buffy
      /join - tony
      /join + sam,tracy

/listen [+ or -] channel[,channel...]

Modify the list of channels you are listening to.

Eg:

      /listen #welcome
      /listen - #trek
      /listen + #buffy

To list the channels you are currently listening to, type

      /listen

/who

List watched people who are currently online.

/quiet [activity]

Toggle quietness. When you are quiet, messages are not displayed but instead stored for later, and the sender of the message will be told that you are quiet.

Eg:

      /quiet working

/read

Read messages received while you were quiet.

/me [activity]

Specify what you are currently doing. When someone sends you a message, or "/look"s at you they will be told what you are doing. (Note that this differs from the IRC meaning of /me.)

Eg:

      /me is avoiding my phd

/look [nick]

See what other people are doing. You can look at a specific person by specifying their nick. If you don't specify a nick, it will print out what everyone in your watch list is doing.

/give file [message]
/give !python_expression [message]

Give a reference to a file, or the result of a python expression to the people you have "/join"ed.

If it is a file, the recipients will be able to download it using the "/take" command.

If it is a python expression, the expression should not contain any spaces.

/giveto nick[,nick...] file [message]
/giveto nick[,nick...] !python_expression [message]

Like "/give", but to a person or people other than those you have "/join"ed.

/take [reference]

Download a reference that someone has "/give"n you.

/say message

Like typing message by itself, except without trying to parse message as a command.

(Useful for the rare occasions when you want to say something beginning with `/' or `!'.)

/repeat n

Repeat the last n messages you received.

/recall

Recall the last message you sent.

This only works for messages sent to people who aren't currently online.

/exit [message]

Exit the Circle. If anyone is watching you, they will see the message, if given.

/logout [message]

Log out, but don't close the Circle window.

/find [-o/--online] name or username

Find a person. Search results will be listed, you can then add the person you were looking for to your contact list with /add.

Eg:

      /find bob
      /find --online tony

Type just /find to list all people online.

/add number

Add a person found with /find to your contact list.

/forget nickname

Remove a person from your contact list.

/set [parameter value]

Set a configuration parameter. /set on its own will display your current configuration.

Available parameters are:

Eg:

      /set
      /set name John Smith

Other commands:

/help [command-name]

Show this web page, optionally starting at the description of the specified command.

/gossip

Fetch and show the latest gossip.

/post

Open a window to compose a new item of gossip.

/stats [-p | --profile]

Report network usage and number of peers.

If `-p' or `--profile' is given, then give an itemized account of network usage. This is for people who are interested in modifying Circle to use less bandwidth. Thus, the figures don't necessarily make much sense without reading the source code.

/clear

Clears the content of the chat window.

Shell commands:

You can execute shell commands if you preface them with a double slash ("//"). For example:

      //ls

The command can be interactive (i.e. prompt for values), but there is no terminal emulation, so things like vi or emacs wont work.

This just happens to be sufficient to use the "goofey" chat program popular at Monash University. For example:

      //goofey
      //goofey -s pfh
      > hi!

Python commands:

You can execute arbitrary Python commands if you preface them with an exclamation mark ("!"). There are two predefined variables: app is the application object, and node is the network node object. Eg:

      !node.call_p_success

Backslashes at the end of lines will be removed before the expression is passed to the python interpreter, allowing multi-line python statements. Eg:

      !for item in node.link_states.values(): \
          print item.round_trip

Commands with multiple lines:

Commands can contain multiple lines. Put a "\" character at the end of each non-final line, eg:

      /msg pfh\
      Hello Paul\
      How are you today?