Latest version: 1.21

Full Source:



Not sure if you have a uiq phone?
Check out the list.

Note: UIQ2 apps do not work under UIQ3, so quirc will not work for p990/m600 or any of the more recent handset models. There is no pjava at all in symbian9, but UIQ3 has a close equivalent in the cdc j2me "personal profile". A quick port might be possible in the future.


Current README.txt:

Quirc 1.21 -
(no relation to, this is irc for UIQ hence QUIrc :)


Jogdial up/down - scroll main text, input history and some lists
Jogdial press - send text in text field, switches between scroll and history mode if the text field is empty
Jogdial back/forward - cycle through open windows (window menu, windows with unseen activity selected first)
N/C button - toggle channel text and nick list (channel windows only)
X button - close current window
Enter - same as OK button in input dialogs/main window

Most are self explanatory, here are those that aren't:
- Autofocus input: always move focus back to the input field after sending text or switching windows.
- Activity * ignore events: refers to the * marker placed before window names to show unseen activity, if enabled only actual text will count as activity (not joins/parts/quits/modes etc).
- Joins/Parts/Quits in status: shows said events in the status window rather than in the channels where they occured (useful for very busy channels).
- Ignore shutdown event: this will cause quirc to disregard any shutdown (window close) attempts issued by the OS because of low memory etc.

Most standard irc commands work. Some can be abbreviated to a single char (/msg = /m, /notice = /n, /ctcp = /c, /join = /j etc)
Commands not recognized are automatically sent raw to ircd (there is no /raw or /quote). Command menu provides shortcuts and input dialogs,
lower part works with the currently selected nick (if current window is a channel, for query/dcc chat selected nick refers to the peer user).

Command menu items that require a channel argument (kick/op/voice etc) will use the last shown channel window.
If no channel and/or nickname is currently "selected" the menu items that require this will be disabled.
Overall behaviour emulates mIRC to a certain extent (colors/formatting also use mIRC style).
QuickText bar (below menu) can be customized with commonly used words or smileys. Clicking will append selected word to input field.
Clicking on the window name part (left) will cycle between the 3 QuickText panels.

DCC is fully implemented, but behind NAT only receiving is possible (sending files or starting chat requires the client to be able to receive an incoming connection).
Quirc will detect if your IP is a private RFC 1918 address and tell you :) Check the DCC path in the options, default is now: D:/Media files/

Aliases (lists):
These are also used for auto-perform stuff that you want to send on connect (just check auto-send on connect when editing an alias).
Multiple commands in the same alias definition are separated by | (use this if you need to control the order of auto-perform alias commands).

Word hilight (lists):
Will hilight added words in orange (complete words only, not substrings). If selected, hilights will also trigger a system beep.

Notify list (lists):
Standard irc notify list. You might want to avoid using this if you're on expensive gprs, since the entire list of nicks you
add here will be sent and received every 40 seconds or so. Notifies are shown in current window (in orange).

Read the changelog below for additional details.


Low prio TODO's/suggestions that can't or won't be implemented (by myself anyway, unless you can give me a good reason/solution):
- Text zoom support (the point of this client is to cram as much irc as possible into the pX00 screen)
- Scripting (remote triggers, variables, user levels)
- SSL support. I haven't found a way to do this for pjava (java 1.1) with any reasonable amount of work. Use Stunnel instead.
- P800/P900 flip closed mode, there is no practical way to do this in device-independent pjava apps.
- Full color code support. I wont add any means of sending color codes :) (and no codes other than mirc displayed, backgrounds not supported).
- Channel listing, not practical (will get you kicked off any major network with a max sendq exceeded error even on a fast connection).
If you don't know where you're going before you connect you should probably read some irc intros and faqs first.

Send your feature requests/bug reports to:
Or just msg me on efnet (nick bowman).

Before reporting a suspected bug, try deleting quirc.conf and all .lst files from the quirc dir (?:/System/apps/Quirc).
This will ensure that default settings suitable for the currently installed version are created when quirc is started next time.
Also remember that any actual crashes (like KERN-EXEC 3) are pjavavm bugs that cannot be fixed by any changes to the java
code (at least as far as the very common input related crashes are concerned). SE have more or less announced that these
crashbugs will never be fixed in any current phone models (they have been present since the first p800 and are still there on
p900). For the virtual keyboard issues, the only suggested workaround is to switch to ezitap (or just avoid the crash situations).

Full source available @

While I doubt many actually use this app like I do :) here is a paypal link for a $5 donation if you feel you need to
prove me wrong:

- Copyright (c) 2003-2005 Johan Frank - See COPYING.txt for GPL license info.




- Added additional charsets: Cp1250 (central european), 1253 (greek), 1257 (baltic)
- Improved FishPlugin handling of corrupt/truncated cipher texts (long messages or fakes)
- Added FishPlugin nick tracking, the key is transfered temporarily and not persisted to file (if encryption is enabled)
- Fixed a bug that caused onjoin channel messages to sometimes disappear (topic etc)
- Fixed file dialog bugs when no memory card was inserted
- Misc gui and performance enhancements :)

Let me know if the new charsets don't work as expected, couldn't really test them properly.


Oops, this was available for auto update before I intended it to.
If you notice anything strange, download it again to make sure you have the proper sis.

- Fixed some color code/formatting bugs (0x0F was not interpreted)
- Added window commands /clear and /close
- Added "auto connect" as a per-server setting (allows for multiple server auto connects on startup)
- Reworked plugin interface to make sense with the multiple server architecture
- Added a simple FiSH/mircryption/blowcrypt-compatible plugin to demonstrate the new features, it resembles FiSH for mirc with a few exceptions:
  - Crypt marker is always used for both incoming and outgoing, it is hardcoded to the  suffix
  - Plain prefix is hardcoded to +p
  - Notices, actions and channel topics are always encrypted if a key is set and outgoing encryption enabled
  - DCC chat is encrypted
  - There is no DH1080 key-exchange built in
  - OK button will change to show a padlock icon for windows with active encryption (windows with a key set and outgoing enabled)
  - Key for current window can be set via FiSH entry in the command menu or using command /fish [key] (omit key to remove)

I don't use fish much myself so let me know if I've missed something.


- Support for multiple server connections! Up to 4 status windows allowed. Some things to keep in mind:
  - Events that display in the current window will still do so even if they originated on a different server
  - More server connections = more threads and sockets = even more crash prone pjavavm, but 2-3 seems to work fine for me
  - Some idle socket connections tend to freeze up when using more than one server, using notify list as a keep-alive may help
  - Features like auto join and auto perform will apply to all servers/networks, no way to limit them to a specific server yet
  - Auto connect still only connects the last successfully connected server
  - "Connect new" will be disabled if there is an unconnected status window, if so switch to that window and use connect instead
  - Window server context is displayed in the top bar for status windows (and in the nick list view for channels)
  - Window server context displayed when changing windows using jogdial and also in the join channel dialog
- SOCKS Proxy support (SOCKS4 anyway, without login/password)
- Disconnect event shown in all affected windows
- Slightly improved url/email string detection
- Jogdial channel cycle improved: status windows excluded (unless they have activity), and back feature (jogdial towards you) always goes to previous window
- Fixed a bug with double-click in multiselect lists
- Disconnect behaviour improved, disconnect twice to force a status window to disconnect if not responding
- Fixed formatting for PART and QUIT messages

Btw: I no longer bother testing properly using the default pX00 system font, so if you think something in the gui looks crap then use sman and switch to tahoma 11p :)


- The port setting for HTTP proxy wasn't used, it always defaulted to 3128 (oops)
- All lists now supports "double-click" selection like the nick list
- Multiple mode changes on a single line now display correctly (only the first affected nick shown before)


- "Plugin" support. See below for details
- HTTP Proxy support. The proxy must allow the CONNECT directive and connections to the typical irc target ports (6667 etc)
- Fixes to auto-update engine
- Changed the .sis file so the PX00-specific quirc.dll is not installed for other platforms (it broke A925/A1000 support)
- Nick list now allows double-tapping on nicks to open a Query window directly
- Multi-command aliases, use | as separator (can be escaped with \)
- Added "Don't send on enter" option for people who constantly type enter by mistake while using cicjot
- Removed the silly "short timestamp" option (still available in quirc.conf in case someone actually used it)
- Removed unused "email address" setting
- Added UTF8 support (tell me if it works)
- Added option to "detect" and decode UTF8 sequences for scandinavian characters while using ISO-8859-1/CP1252 (hehe)
- Added "hide ping? pong!" setting
- Misc minor fixes and improvements

The plugin support is undocumented, and there is no well defined interface between quirc and plugins. It is really just a
mechanism for loading additional classes at runtime. Any classes named *Plugin.class found in ./plugins will be loaded.
Any dependency classes needed by a plugin would also have to be present in ./plugins (extracted, no jars). The only
plugin so far is BowbotPlugin, and while it won't be of any actual use to anyone but me it could serve as an example. :)

- Added a button to about box for manual version checking
- Fixed wrong string for "auto send on connect" in alias edit dialog
- Added auto-detection for email addresses and made them hilighted and clickable, as with URLs
- Added infoprint text for hilight events when Quirc is in the background (also shows up when in flip closed mode)
- Improved hilight behaviour (nicknames and own events no longer checked for triggers, new separator chars added)
- Added auto-download option for future quirc versions to the version notification dialog
- Fixed handling for special channel prefixes (# still default of course): server-local &, non-collidable !
- Fixed the partially implemented /server <server> command (server switch)
- Fixed notify list entries/hilight words being forced to lowercase when saving (nickname matching is case insensetive though)
- Added a simple ignore list, but be careful with this as it it may increase cpu usage (keep it short, use specific masks)
- Added /ignore <nick|mask> command (toggles, add again to remove).
- Added ignore to command menu (selected nick will be used to make a nick!*@* mask)

Note that the ignore list is only saved to file when modified from the Ignore List dialog.

- Added a few more unsupported control codes to the ignore list (hopefully no more boxes)
- Moved all visible ui strings to for easier translation
- WHO replies no longer displayed in current window (helps when re-attaching to certain bouncers)
- Fixed private ctcp action (/me) appearing in current window instead of the correct query window
- Fixed text-selection moving down when new lines were added to a window that was at the line limit (300 lines)
- Fixed scrolling on added lines occuring even when viewing scrollback (now it should stay still :)
- Misc minor tweaks and fixes

- Fixed issues with configuration disappearing (probably, let me know if you still experience this)
- Fixed whois reply parsing (included a few more common and interesting reply codes)
- Fixed bug with duplicate dcc chat disconnect notifications
- Fixed dcc sockets not being closed on pjava disconnect failure (infinite msg repeat, see 0.17)
- Changed jogdial channel cycling to pick channels with hidden activity before others (if any exist)
- Added checks for new Quirc version
- Added warning dialog when trying to initiate dcc using an mroute ip address
- Added multiple quick text panels (cycle through them by clicking on the window name part of the title bar)
- Added AboutBox :)
- Misc gui and dialog layout tweaks.
- Improved /topic command (/topic [#chan] [newtopic]). Added a popup menu for changing topic via nick list panel topic box
- Improved speed of file listing in the dcc file selection dialog (awt.List is almost unusable in this jvm, and the real awt.FileDialog crashes every time)
- Added support for other character encodings (options dialog). The pjavavm doesn't include any classes for this, see below for details

The only character encodings included by default appears to be latin-1 (iso-8859-1, cp1252), so any others need to be added manually.
So far I have only added classes for Cyrillic encoding (Cp1251 and KOI8_R), but let me know what you use and I'll add more...

- Made jogdial operation more consistent (all directions now perform as expected regardless of what has focus)
- Fixed bug with server list parsing (all servers following one with password set would receive the same password)
- Made https:// urls clickable
- Fixed ctcp time reply and topic time format (now 24 hour)
- Made jogdial press cycle focus between the input field and the text area (scrolling/history) if the input field is empty
- Reworked nick list handling, switching between windows is much faster now (and not depending on the channel size)
- Improved nick list parsing, and added some progress indicator printouts when joining channels (helpful in very large ones)

Note that joining very large channels (500 users+) can still take more than 1 minute.

- Fixed PING causing disconnect bug (same fix as in the patched quirc.jar)
- Improved command menu to contain some additional common commands (mainly ctcp/dcc)
- Added /dcc send <nick> and /dcc chat <nick> (same as in command menu)
- Added command history. Jogdial up/down will now cycle through the history if the inputfield has focus
- Modified the platform product id used for the .sis file installer to include all uiq devices (A920 etc)
- Fixed ircd passwords not being used (again, really fixed this time :P thanks kurd)
- Added an option for ignoring shutdown events from the OS (window close request sent when memory is low)

- Fixed bug with duplicate uncloseable query windows
- Added progress dialog for dcc transfers (with an option to abort). Transfer windows show up as DF in the window menu
- Fixed dcc chat windows not properly showing when peer user disconnected
- Added /onotice [#channel] <message> (/on), basically equivalent to /n @#channelname <message>. If channel is omitted the current one will be used
- Added elaborate measures to trap and handle yet another obscure PJava bug. See below for details

Just in case anyone is interested: When the socket connection with the ircd is broken in a particular way (seems to occur
mainly when walking out of bt range or when gprs coverage momentarily dies) the java socket object will seem to remain
connected. Read operations on this zombie socket will immediately return slightly garbled and random data from the native read
buffer (or so I assume). This will cause an apparently never ending stream of repeating irc messages. To prevent this
infinite loop all lines from the ircd are now validated with some fairly strict sanity checks (let me know of any false
positives, exotic irc networks might send stuff that will now cause quirc to disconnect). If a disconnect like this occurs
you should see "PJavaVM disconnect failure or parse error" as the final error before disconnect (status window).

- Made /dns command accept nick names (will resolve user host)
- Added setting for showing joins/parts/quits in status rather than the affected channel window
- Added event showing number of users in a channel on joining
- Hilight/beep no longer triggered by ircd reply codes (e.g /whois yournick would hilight every line of the reply)
- Made /query command accept an additional optional message argument (like /msg, and mirc /query)

- Fixed ircd password setting not being used
- Improved text selection and url regions in scrollback
- Fixed clickable urls failing after scrollback was filled (more than 300 lines in a window)
- Removed "Auto join channels" option and added a new per-channel setting for this instead
- Main "Channels" dialog now allows editing of defined channels (use Command -> Join to for the join channels dialog)
- Added "Auto connect on start" option to connect to the last successfully connected server on startup (ok shirow? :P)

- Fixed Voice/Devoice menu item not doing anything (typo)
- Fixed nick mode tracking (would cause duplicate entries in nick lists on mode changes)
- Fixed Op/Deop and Voice/Devoice not working unless triggered from nick list view
- Fixed redundant echoing of /mode command (would show mode changes by user twice)
- Fixed proper control/color code stripping when using copy/paste
- Modified input field to replace line breaks with spaces, to allow pasting multiple lines (this is imperfect and a temporary measure as it will insert spaces wherever hard breaks occured in mid-word)
- Improved the bold font

- Added limited text selection to the custom drawn text areas (main windows)
- Added edit sub-menu with copy/paste to the main menu (conventions be damned)
- Fixed bug introduced in 0.12 where nick list panel wouldn't display if there was no topic set in a channel
- Modified channel info to handle realtime updates
- Changed the "username" used for ircd sign on (some undernet servers didn't like nicks with special chars used as username)
- Added /w shortcut for /whois <nick> command

- Fixed real name setting not being used
- Added /dns command (/dns <hostname>), but no reverse lookup
- Added long timestamp option ([hh:mm], not just [mm])
- Added remaining channel info to nick list panel (number of users, channel modes, topic set by, date)
- Added "Auto send on connect" flag to aliases
- Fixed list dialog bug where deleting items would not cause list to be saved
- Added localhost printout on startup. If you have a connection prior to starting quirc this will show your ip address, and tell you if it is a real address or private (NAT). If mroute is in use the wsockhost.mrouter address will also be displayed
- Fixed config file creation bug (caused config file to be written once for each setting, so first startup took forever to complete)

- Fixed some editing issues with the list dialogs (channels/servers/nicks/aliases)
- Replaced Connect button in Server list with Edit and added another Edit button to Hilight dialog
- Modified aliases: alias commands are no longer automatically prefixed with / (this allows for plain lines of text and not just commands)
- Moved nick & alt. nick settings to connect dialog and added DCC path to options (dir for incoming dcc files)
- Added URL detection: urls will be highlighted and can be copied to clipboard (clicking will bring up a popupmenu)

- Fixed several case sensitivity issues with queries and channel windows
- Improved disconnect handling. Channel windows will remain if disconnected but are now properly flagged and can be closed without having to rejoin the channel (N/C button will change to X for a "detached" channel window)
- Removed a few redundant beeps :) (user initiated query for example)
- Fixed bugs related to Activity * ignore events setting

- Added "Activity * ignore events" setting (windows will not be flagged with * unless someone actually says something - nick changes, joins/parts/quits/modes ignored)
- Added simple aliases. If "Auto send on invoke" is not selected, the alias will not be sent when triggered, but instead inserted into the input field for editing. This allows for a bit more flexibility (for example aliasing partial command strings and filling in any "dynamic" parts manually)
- Removed unecessary menu updates (would close menu on window activity even if there were no visible changes)
- Added /query <nick> (/q) pseudo-command to match the Query command menu item
- Fixed channel dependant command menu items being enabled despite no current channel
- Display last channel window (if existing) rather than status window when closing chats/queries

- Added hilight word list (with beep on hilight/hilight own nickname)
- Added beep on incoming msg/chat/file setting
- Improved layout of several dialog windows
- Many minor fixes

- Added partial DCC support (incoming chats/files)
- Added icons

0.06 and before
- Everything else :)