Silver's Simple Site - Weblog - Tags - ChatZilla

ChatZilla's Munger

It's in need of some slight attention right now. The main problem is that it always prefers munger entries that were enumerated first, which equates to added first in Spidermonkey (Mozilla's JS Engine).

I filed the bug on it a while ago now, but it recently came to my attention that Wikipedia actually had a script that broke stuff because of it. I've corrected the script with version 1.2 so it doesn't completely break normal links, but the real bug still stands.

Permalink | Author: | Tags: Mozilla, ChatZilla, Bugs | Posted: 03:32PM on Sunday, 05 June, 2005 | Comments: 0

File, Edit and View

You don't use those menus, do you? Good, because now you can't in ChatZilla on current Mozilla and Firefox builds! The menus vanished mysteriously one morning, after DOM Inspector got a menu hack-attack. If it weren't for a slight problem with :empty, it'd be ok, but it's not.

Edit: bsmedberg had a good idea to hack around the :empty problem, which I've done into a patch. Hopefully this will be fixed soon in trunk (and will be in

Permalink | Author: | Tags: Mozilla, ChatZilla, Bugs | Posted: 05:05PM on Sunday, 05 June, 2005 | Modified: 05:41PM on Sunday, 05 June, 2005 | Comments: 0


Filtering stuff is one of those things everyone wants to do, no-one wants to write the code, and even fewer debug it when it breaks. Luckly, this doesn't stop some intrepid people from adding message filtering to ChatZilla.

Of course, the killer questions are:

  1. what to filter with, and
  2. what to do when a filter matches?

The first question is relatively easy, we only have a limited number of things known about a message anyway.

  • Actual message text, of course
  • The type of message (PRIVMSG, NOTICE, JOIN, etc.)
  • Source (e.g. the user object)
  • Destination (e.g. the channel object)
  • Handler source. This one is the fun one - it is where the message was displayed 'from', e.g. what code handled it. It may sound useless, except that it will be the default destination if no filters match, and will mean messages for a particular channel will appear on that channel (at least by default!).

That was easy. So what about the actions? They are more fun, as this is where the real flexibility will lie in the system. What I see being included:

  • display on source view
  • display on destination view
  • display on handler view
  • display on handler's parent view
  • set message priority (superfluous, activity, attention)
  • make sound (beep or WAV file)
  • activate/flash window
  • run some JS?

Update: Draft spec is here:

Permalink | Author: | Tags: Mozilla, ChatZilla, RFE | Posted: 04:13PM on Friday, 10 June, 2005 | Modified: 09:57AM on Tuesday, 14 June, 2005 | Comments: 0

Away 20th - 24th

I will be off down to Cov for the entire week, to generally socialise and stuff. Since multiple companies are sucking heavily with regards to something as simple as getting a PSU to me, the computer I am taking may or may not actually have a PSU in it when I take it. I'm willing to bet it wont. The upshot of this is that I may have significantly limited access to anything Internet-like for a few days, but damn well better be on-line by Wednesday.


Since I wont be taking my laptop, will stay up and fully functioning (bearing with issues like ADSL going pop), and all the usual contact methods will work as good as they ever do.

Note: It seems has died as of 12:22AM UK BST, suspected to be heatstroke. That wont be back until last morning Monday I suspect.


I have a mostly working line marker! It's not perfect (when it appears, it doesn't scroll the line into view, meaning it is really hard to tell when it is occuring to the unfocused view), but it works for the most part. Still got some issues with scrollDown and force to sort out...

Permalink | Author: | Tags: Fun, ChatZilla | Posted: 12:19AM on Sunday, 19 June, 2005 | Comments: 0

What's in a Menu?

Everything: you use them almost all the time when using the mouse, and pretty often when using the keyboard - though it varies depending on the app.

ChatZilla's menus have been evolving over time since they first appeared, probably at least 5 years ago now, and are a in a bit of a mess. As part of fixing this, I've drawn up the current menus in the Mozilla Wiki. If anyone wants to move stuff around, into the "right" place, and add notes, they're welcome to, after all, it's a Wiki.

Permalink | Author: | Tags: Mozilla, ChatZilla, Bugs | Posted: 04:45PM on Tuesday, 12 July, 2005 | Comments: 0

It Broke

Begining build of ChatZilla
 WARNING: output XPI will be overwritten.
 Checking XPI structure.....            done
 Checking JAR structure..               done
 Updating Firefox Extension files.....  done
 Updating Mozilla Extension files....   done
 Constructing JAR package..C:\Program Files (x86)\Cygwin\bin\perl.exe (3972): *** recreate_mmaps_after_fork_failed
Cannot determine cygwin mount points. Exiting.
     3 [main] perl 3972 fixup_mmaps_after_fork: WARNING: VirtualProtectEx to return to previous state in parent failed for MAP_PRIVATE address 0x1ED0000, Win32 error 87
   538 [main] perl 3972 fixup_mmaps_after_fork: WARNING: VirtualProtect to copy protection to child failed forMAP_PRIVATE address 0x1ED0000, Win32 error 487
   680 [main] perl 3972 fixup_mmaps_after_fork: ReadProcessMemory (2nd try) failed for MAP_PRIVATE address 0x1ED0000, Win32 error 487
C:\Program Files (x86)\Cygwin\bin\perl.exe (3972): *** recreate_mmaps_after_fork_failed
     6 [main] perl 2916 fork_parent: child 3972 died waiting for dll loading

And thus ended my Cygwin Perl installation. No matter of rebaseall-ing or complete Cygwin reinstalls could fix it, and I don't even understand precicely what the error is.

So a short while later, I had myself an ActiveState ActivePerl install, (a wrapper I wrote to use ActivePerl in places expecting Cygwin Perl), and some tweaks to to let me specify the Perl engine (save me doing path & symlink hacks). And thus it did build! Yay!

Permalink | Author: | Tags: ChatZilla, Cygwin | Posted: 07:40AM on Tuesday, 19 July, 2005 | Comments: 0

Running Late

So much for early-June. Well, the tree is still frozen, which doesn't help at all. Plus reviews are slower than expected. We're also not going to get 0.9.69 out any time soon at all - the next release will be, hopefully not too far away now.

We are, however, making slow but steady inroads into the bug list, and have a few people outside the 'core' (Robert Ginda, Samuel Sieb and myself) who are doing patches and generally helping a lot. It sounds like we're going to get a better (ish) reconnect system shortly, too.

Permalink | Author: | Tags: ChatZilla | Posted: 12:30PM on Thursday, 21 July, 2005 | Comments: 0

ChatZilla 0.9.69

The next ChatZilla release will be called 0.9.69, mostly due to the excess of changes that have occurred on trunk since the last release. This will be the codebase merged to trunk, plus some extra compatibility updates; this means all the trunk changes since then will be included - and there are a lot of them!

Look forward to it!

Permalink | Author: | Tags: ChatZilla | Posted: 12:27PM on Wednesday, 30 November, 2005 | Comments: 0

It's Out!

I suppose I probably should mention that ChatZilla 0.9.69 has been released. Woo.

We're currently working through a couple of big issues, but the release is great. The main problem anyone is likely to encounter is bug 319066, which should only occur if you select the top user in the userlist, and then switch tabs.

Permalink | Author: | Tags: ChatZilla | Posted: 04:48PM on Monday, 05 December, 2005 | Comments: 0


It's been released, but may take a few days to appear on This update fixes the userlist/tab switching issue mentioned previously, as well as some less interesting things, like adding support for /dcc-accept with non-regexp parameters.

As ever, the revisions list has the gory details, including bug links and download link for those too impatient for

Permalink | Author: | Tags: ChatZilla | Posted: 02:14AM on Saturday, 17 December, 2005 | Comments: 0

Instrumentation Data

We're actually getting some interesting data coming it from the instrumentation "startup ping".

In particular, you can see that people updated from Firefox 1.5 to almost the moment it was released.

We can also estimate that there are approximately 1100 new or updated ChatZilla users a week (calculation: sum up new installs [the numbers on the pages linked, 40], divide by the number of days [25], multiply by 700 [1% and we want per-week]).

Permalink | Author: | Tags: ChatZilla, Firefox | Posted: 03:55PM on Monday, 06 February, 2006 | Comments: 0

ChatZilla 0.9.74

It is coming, eventually. The plan for last Sunday didn't quite work out, but we're now ready to go and should be rolling it out this coming weekend instead. To come in this version:

  • /who now accepts multiple parameters (useful for some of the more extended syntaxes some servers support).
  • A small leak for plugins has been fixed.
  • Sending files with DCC closes the file handle in more cases so it shouldn't stay locked after.
  • When midnight happens, the messages about the logs changing have been suppressed.
  • If your connection to a server drops, ChatZilla will now try to reconnect to the same server first, before moving on to the next one in the list.

Permalink | Author: | Tags: Mozilla, ChatZilla | Posted: 03:43PM on Wednesday, 21 June, 2006 | Comments: 0

The Art of the Proxy Configuration

ChatZilla doesn't support HTTP proxies. Well, I say "HTTP proxies" but this particular thing apparently has far too many names:

  • HTTP proxy [X-Chat]
  • SSL proxy [Firefox]
  • CONNECT proxy
  • URL proxy
  • Secure proxy
  • (incorrectly) HTTPS proxy
  • "Proxy" protocol [mIRC]

Personally, most of them are completely meaningless terms. "HTTP proxy" is what everyone (except Ben C) calls it.

The problem that we face is relatively simple from the top, but a real pain to actually fix: we ask Necko (Mozilla's network layer) to pick the proxy to use.

The result is that it will ask PAC if so configured, just return the SOCKS v4/v5 proxy, or return no proxy. The user has no way to configure Necko to give IRC the HTTP proxy.

There are a few things we can do, none of which seem that good:

  • Add a single option to force ChatZilla to use Necko's HTTP proxy.
  • Add an option to pick between none, HTTP proxy and SOCKS proxy.
  • Add an option to override Necko, and also add host/port settings.

The real problem is that adding any options will be creating two locations for proxy configuration. Could we automatically pick when to ignore Necko's choice? Maybe. Should we? Probably not.

If only I got paid for doing this...

Permalink | Author: | Tags: Mozilla, ChatZilla | Posted: 03:48PM on Tuesday, 04 July, 2006 | Comments: 0

Time for a New Roadmap

Now that it has been officially stated that XULRunner is dead, it is time for a ChatZilla Roadmap Change™.

The original XULRunner and ChatZilla plan was to wait until the 1.9 version of XULRunner was officially distributed - 1.8 was never going to have the necessary shared UI or support - and then produce a ChatZilla package that works on it. Ideally, we would use the same XPI as for Firefox, SeaMonkey, etc. installs, although there were/are still some pretty critical hurdles to overcome for that to work. Even if it was a separate XPI, it would be a normally-size ChatZilla XPI, and could be on Firefox Add-ons.

So much for that.

After getting over the initial "WTF?" reaction, we need to decide on the way forward for ChatZilla on XULRunner. Thanks to tH's wonderful ChatZilla on XULRunner page (which include built nightlies from the appropriate dates), we do actually have a measurable percentage of our user base running this configuration. A small percentage, but not zero.

  • Do we build XULRunner ourselves? This would require a lot of effort on our part, and really should be shared with other projects if possible.
  • Do we only make available our ChatZilla package, and tell users to find their own XULRunner (or link to someone else who is making them)?
  • Do we give up trying to support XULRunner entirely?

Right now, I don't know, but the last option is looking disappointingly good.

Permalink | Author: | Tags: Mozilla, ChatZilla, XULRunner | Posted: 03:19PM on Monday, 14 May, 2007 | Comments: 0

ChatZilla: Notify on All Messages

ChatZilla users have for a while wanted to get a notification on all messages, but we've never considered it important enough to warrant fixing individually, instead opting to recommended some workarounds:

  • Add all vowels/letters to the Stalk List, thus triggering the normal stalk matching on (almost) every message.
  • Write a simple script, but never providing one ourselves.
  • Wait for the new message filtering which will be able to do it, among many other variations.

Today, another user asked for this feature, and I caved in and wrote a script to do it. To install the script:

  1. Find the scripts folder. You can use either /pref profilePath or /pref initialScripts since the latter defaults to the "scripts" subdirectory of the former. You want the "scripts" subdirectory, if that wasn't obvious.
  2. Create a new directory for this script. My suggested name is "message-notify", just to match the script's ID, but ChatZilla doesn't care.
  3. Save the script itself into the new directory, making sure to name it "init.js".
  4. Reload all scripts with "/eval processStartupScripts()". This will reload all the scripts found in the subdirectories of the "scripts" directory - including the new one.

The following message categories trigger the script, but only when the window is inactive (nothing happens if the window is active):

  • channel:privmsg
  • channel:action
  • channel:notice
  • channel:join
  • channel:part
  • channel:quit
  • channel:kick

The script has two preferences:

  • sound - specifies what sound to play when a message arrives. Defaults to "beep", and can accept the same things as the standard ChatZilla sound preferences (namely, a file: URL, "beep" or "none").
  • attention - specifies whether to grab the user's attention, which usually means flashing the window but can vary by platform. Defaults to "true".


Permalink | Author: | Tags: ChatZilla, Scripts | Posted: 09:09PM on Friday, 08 June, 2007 | Comments: 0

ChatZilla Static Release Console

Some people know about the ChatZilla Release Console, a slightly unstable and very dynamic page which displays the bugs planned for the next ChatZilla release or two (as well as an archive of bugs fixed in older versions). It's been around a while, and works in IE 7 and Firefox 2, but it is pretty heavy on the dynamics, and some people have had it completely hang Firefox on occasion.

To address this, I have created the ChatZilla Static Release Console, which is entirely static HTML (and CSS), created by Perl on my server rather than JavaScript on the client. It doesn't even have a META refresh. You can also get it to view a specific release.

Permalink | Author: | Tags: ChatZilla, Perl | Posted: 04:27PM on Sunday, 20 January, 2008 | Comments: 0

ChatZilla Plugin: Network Trace


This plugin for ChatZilla allows you to see the incoming and outgoing network messages easily.


  • /network-trace [<toggle>]

    Without any arguments, displays the tracing status for the current network.

    With the toggle argument, controls the tracing status for the current network. "true", "on", "yes" and "1" will enable tracing. "false", "off", "no" and "0" will disable tracing.


[<<] PING
[>>] PONG
[>>] JOIN #channel
[<<] :Nickname!chatzilla@hostname JOIN :#channel
[<<] 353 Nickname = #channel :@Nickname
[<<] 366 Nickname #channel :End of /NAMES list.
[>>] MODE #channel
[<<] 324 Nickname #channel +nt
[<<] 329 Nickname #channel 1454711109
[>>] PART #channel :
[<<] :Nickname!chatzilla@moz-eif.ga4.155.217.IP PART #channel :""


If you have ChatZilla build 0.9.92 2016-02-08 19:00 or later, you can do:


Otherwise, due to a bug, you will need to download the master archive and extract it in to a new subfolder of the "scripts" folder. This can be found inside the path shown by the command "/pref profilePath".


[INFO] Preference “profilePath” is “C:\Users\James\AppData\Roaming\Mozilla\Firefox\Profiles\\chatzilla”.

means the best place to extract the archive is


Permalink | Author: | Tags: ChatZilla, Scripts | Posted: 09:30PM on Sunday, 14 February, 2016 | Comments: 0

ChatZilla Plugin: Topic Diff


This plugin for ChatZilla shows you the changes made to a channel's topic.


=-= Nickname has changed the topic to “ChatZilla topic diff test”
=-= Nickname has changed the topic to “ChatZilla diff test”
=-= Nickname deleted "topic ".
=-= Nickname has changed the topic to “ChatZilla diff testing!”
=-= Nickname added "ing!".
=-= Nickname has changed the topic to “ChatZilla topic diffing”
=-= Nickname added "topic ", deleted " test", deleted "!".

Permalink | Author: | Tags: ChatZilla, Scripts | Posted: 08:00PM on Sunday, 21 February, 2016 | Comments: 0

ChatZilla Plugin: Activity in Title


This plugin for ChatZilla shows activity in channels and private messages in the title bar.

Display - Text

The textual display shows up to three groups, each containing a list of views in that state.

  • <...> indicates items with stalk events (e.g. mentions of your nickname, stalk words, and private messages).
  • [...] indicates items with chat events (e.g. all talking in channels).
  • (...) indicates items with superfluous events (e.g. joins, parts, topic changes).

Display - Symbol

The symbolic display shows a single symbol for each view, in the same order as the textual display groups.

  • ! indicates an item with stalk events (e.g. mentions of your nickname, stalk words, and private messages).
  • + indicates an item with chat events (e.g. all talking in channels).
  • - indicates an item with superfluous events (e.g. joins, parts, topic changes).


  • display.symbol boolean (default false)

    When enabled, the display is just status symbols (!, + and -). Otherwise, the display is (possibly truncated) names.

  • display.crop integer (default 0)

    Specifies how much of the view name to include, in characters. A value of 0 turns off truncation.

  • titlebar.event boolean (default false)

    When enabled, the title bar includes superfluous events.

  • boolean (default true)

    When enabled, the title bar includes chat events.

  • titlebar.stalk boolean (default true)

    When enabled, the title bar includes stalk events.


  • <UserA, UserB> [#channelA] (#channelB) ChatZilla!

    In this example, UserA and UserB have stalk events, #channelA has chat events, and #channelB has superfluous events. Superfluous events are hidden by default.

  • !!+-ChatZilla!

    This is the same as the example above, but with display.symbol set to true.

Permalink | Author: | Tags: ChatZilla, Scripts | Posted: 09:00PM on Sunday, 28 February, 2016 | Comments: 0

ChatZilla Plugin: Input Keys


This plugin for ChatZilla lets you type most text formatting commands with keyboard shortcuts.


  • Control-B for bold
  • Control-U for underline
  • Control-K for color
  • Control-O for reset (original)

Permalink | Author: | Tags: ChatZilla, Scripts | Posted: 09:00PM on Sunday, 13 March, 2016 | Comments: 0

Powered by the Content Parser System, copyright 2002 - 2022 James G. Ross.