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.
Features
Customizable variables
These can be set in the .beirc.lisp file in your home directory (although this too can be changed in variables.lisp):
*hyperspec-base-url*
*default-fill-column*
*timestamp-column-orientation*
:right (the default) or :left.
*default-nick*
*default-web-browser*
*auto-join-alist*
*nickserv-password-alist*
*default-sound-player*
*sound-for-my-nick*
*default-sound-player*), when your nick is mentioned. Could be NIL instead.
Commands
- /Connect server nick
- /Identify
- Identify yourself to the NickServ service.
- /Join channel
- /Focus nick
- Display messages from nick in bold.
- /Unfocus nick
- Stop displaying messages from nick in bold.
- /Ignore nick
- Don't display any messages from nick, past or future.
- /Unignore nick
- Display messages from nick again.
- /Nick string
- Change nick to string.
- /Me stuff
- Do stuff.
- /Msg nick message
- Send message to nick.
- /Reload
- Reload the user init file.
- /Part message
- Leave the channel with message.
- /Close window[,window2...]
- Close the list of windows. If any of these windows refers to a channel, leave each channel.
- /Whois nick
- 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.
- /Op nick
- Give channel operator status to nick.
- /Deop 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
- Kick nick from the current channel.
- /Names
- Display the list of users on the current channel.
- /Away message
- Set away status to message.
- /Quit message
- Disconnect from the server with message and terminate beirc.
- /Disconnect message
- 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 Interaction
There'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 Systems
The following Hardware/OS/Lisp Implementation combinations are known to run beirc (somewhere, at least):
| Hardware Platform | OS | OS Version | Lisp Implementation |
|---|---|---|---|
| Intel x86 | Debian GNU/Linux | 3.1, kernel 2.6.13 | Multithread SBCL 0.9.5 |
| Intel x86 | Mandriva GNU/Linux | 3.1, kernel 2.6.12 | Allegro CL 8.0 |
| PowerPC G4 | OS X | 10.4.2 | OpenMCL 0.14.4-pre-050807a |
Wish List
- /list command, or users pane a la XChat.
- Working help.
- Some hints about keystrokes (this is really at least partly a McCLIM issue).
- A pony.
- The moon. On a stick.
- "IRC clients should show a diff on topic change."
Oddities
Things 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.
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.