beirc is a CLIM IRC client Application using the cl-irc library as a backend, initially written by Gilbert Baumann, now maintained by Dave Murray and others.Source code and screen shots are available at common-lisp.net/project/beirc.Beirc requires the newest CVS version of cl-irc and McCLIM, as well as Max-Gerd Retzlaff's tab-layout-pane . Note also that beirc currently requires a lisp that supports multiple processes. The developers are using multithreaded SBCL on x86/linux and OpenMCL on ppc/darwin. CMUCL on x86 could work, as well. (More details are available in the table below. If you get beirc running on a system not noted there, please add it.)Warning: The sound support in beirc is currently very experimental. It works on ACL, probably works on SBCL, and almost certainly only on Unix variants. FeaturesCustomizable variablesThese can be set in the .beirc.lisp file in your home directory (although this too can be changed in variables.lisp):
Set to url (as a string) of your local copy of the Hyperspec and specbot's clhs query answers will be rewritten appropriately.
The maximum width in characters of the message column (as distinct from the name column and the timestamp column). Defaults to 80.
The position of the timestamp column on the screen. Either :right (the default) or :left.
Your nick, as a string.
The command (as a string) to run your web browser. Should work out-of-the-box.
An alist mapping an irc server name (as a string) to a list of channels (each a string) to automatically join on connecting.
An alist mapping an irc server name (as a string) to the password (as a string) to send to the NickServ authentication bot.
A string naming a program (or a program and command-line arguments) that will read sound files from standard input and play them. Used for rudimentary sound support.
A filename (string) that specifies a file to be played (by *default-sound-player*), when your nick is mentioned. Could be NIL instead.
/Connect server nick
Identify yourself to the NickServ service.
Display messages from nick in bold.
Stop displaying messages from nick in bold.
Don't display any messages from nick, past or future.
Display messages from nick again.
Change nick to string.
/Msg nick message
Send message to nick.
Reload the user init file.
Leave the channel with message.
Close the list of windows. If any of these windows refers to a channel, leave each channel.
Perform a WHOIS query on nick.
/Topic [:Topic new topic]
If executed without keyword arguments, shows the current channel topic. If passed the :Topic keyword argument, sets the current channel topic to new topic.
Give channel operator status to nick.
Remove channel operator status from nick..
/Ban Nick nick
Set channel mode +b (ban) to nick!*@*.
/Ban Hostmask hostmask
Set channel mode +b (ban) to hostmask.
Kick nick from the current channel.
Display the list of users on the current channel.
Set away status to message.
Disconnect from the server with message and terminate beirc.
Disconnect from the server with message.
/Switch Timestamp Orientation
Sets orientation of timestamps to the left column if they are in the right column and vice versa.
Mouse InteractionThere's an awful lot of it. Many items are displayed as clickable CLIM presentations, including nicks, URLs, tabs for servers and channels, etc., allowing easy access to basic commands. Documentation for whatever you're about to do by clicking is provided, as in other CLIM apps, in the lowest, black pane; this gives you an idea of what, if anything, will happen when your Left, Middle or Right click occurs.Working SystemsThe following Hardware/OS/Lisp Implementation combinations are known to run beirc (somewhere, at least):
3.1, kernel 2.6.13
Multithread SBCL 0.9.5
3.1, kernel 2.6.12
Allegro CL 8.0
/list command, or users pane a la XChat.
Some hints about keystrokes (this is really at least partly a McCLIM issue).
The moon. On a stick.
"IRC clients should show a diff on topic change."OdditiesThings that should probably be fixed, once we know what causes them.
URL handling for URLs that appear in the chat as () does not work. AFAICT, the url is forwarded to the browser together with the opening paren, causing failure.
Would be nice to have auto-identify, the same way we have auto-join.
Use of help command causes error.
Error: attempt to call `#:STREAM44679' which is an undefined function.
List of commands that you get on right click should be listed alphabetically (or possibly even in nested menus, since the list is so long).
There are many ways to cause the system to fail with completion errors. These should be trapped. Some of this is more McCLIM problems than BEIRC proper, I figure.Old bugs:
The box-adjuster-gadget does not work for me (rpg). It comes active, but is unable to adjust the size of the windows. Seems not to happen for others (antifuchs) with different setups (possibly more up-to-date CLX than the version included with ACL?). This seems to be a problem with the setting of
min-height in the space-requirement for the tab-layout-pane. I have not yet been able to track down where this is set. fixed: There were exact pixel sizes coded in as :height and :width. By default, any window settings are copied into :min-height and :min-width. Being a little more careful about the difference between :height (resp. width) and :min-height, seems to have fixed things up.