
Copyright © 2003, 2004, 2005, 2006, 2007
Kopete is KDE's multi-protocol instant messenger client.
Table of Contents
- 1. Introduction
- 2. Getting Started
- 3. Using Kopete
- 4. Configuring Kopete
- 5. Kopete's Protocols
- 6. Kopete's Plugins
- 7. Menu Entries
- 8. Frequently Asked Questions
- 9. Credits and License
- A. Installation
- B. Kopete Chat Window Style Guide
- C. Kopete Pipes Plugin Implementation Guide
- D. Jabber Handbook
- E. ICQ Handbook
- F. Emoticons Specification

If you're not familiar with Instant Messaging, please read the Getting Started section to learn about this wonderful world before continuing.
Kopete is the KDE instant messaging (IM) client. It allows you to communicate with your friends and colleagues using various instant messaging services. A single program is easy to learn and convenient if your friends or colleagues use more than one IM service.
Kopete is designed to integrate well with your KDE desktop; to make it immediately familiar. The user interface is clean and simple, without any frills to distract the user. At the same time, Kopete aims to make communication the focus of IM, by removing the differences between different IM systems. One feature Kopete introduced to support this is the Metacontact, combining the various means there are to contact someone into a single “person” in your contact list. Other multiprotocol instant messengers list the same person's various IM accounts separately, making it confusing for non experienced people. Kopete makes life easy: a metacontact is a person, and contacts are ways to communicate with that person. You will recognize contacts in a metacontact easily as small icons representing the IM services you could use to communicate with that person.
Kopete is intended for all levels of users. Out of the box, it supports a minimal set of functions to make chatting as easy as possible. More advanced users can add extra functions such as Statistics with Kopete's plugin system.
For more info about the Kopete project; the team maintains a website at http://kopete.kde.org. The latest news and updates are always available there.
If you need to contact the team, the Kopete developers' mailing list is hosted at https://mail.kde.org/mailman/listinfo/kopete-devel.
If you want live support, there is an Internet Relay Chat channel for Kopete where you can find the team discussing technical (well, not always) issues or just hanging out. You can use any IRC client to join the channel (including Kopete), just add an IRC contact and use irc.freenode.org
as the server and #kopete
as the channel name. See you there!

What is Instant Messaging (IM)? IM is a way for you to communicate instantly with your friends over the Internet. That might not sound so different to email. Have you ever noticed how cumbersome it is to have a brief conversation via email? You have to click Reply to each message, then find the right spot in the message to type something new, then send it. Then you have to wait for the next message to arrive! IM lets you to have a conversation almost as naturally as on the phone or face to face, by typing messages into a window shared between you and your friend's screens.
Another difference between IM and email is that with IM you can see your friends' presence, that is, whether they are actually on-line at the same time as you. This lets you send messages truly instantly, instead of sending off a mail and having to wait for your friend to check their mailbox. An IM message pops up on the other person's screen as soon as you send it. Of course, if you'd rather not be interrupted, you can change your own presence so others will know not to disturb you.
There are lots of other fun and useful IM features you can explore with Kopete, like group chats, file transfers and emoticons that reflect your mood. Read on to find out more!

To use Kopete you need to set up one or more accounts for the instant messaging services you wish to use.
You've probably already chosen a messaging service, either because you already use IM, or you need to use the same service as your friends. If you don't fit into either of these categories, please consider using a messaging service based on open standards, because these are designed for use by Free Software. Other messaging services are prone to changing the underlying technology without making the details freely available, making them harder for Free Software developers to support.
The messaging services that Kopete supports that are based on open standards are Jabber and IRC.
The following section assumes you are registered with an IM service already. If not, you can register with Gadu-Gadu, Jabber, and WLM™ from inside Kopete; for other services, you'll have to register using their respective web site before creating an account in Kopete.
To create an account, use → to display the Configure window.
The Configure window is the main way to set up and customize Kopete. On the left a column of icons control which aspect of Kopete is being configured. Click the Accounts icon. The main pane will change to display the account management pane. This is currently empty, but will soon list your IM accounts. Click to display the Account Wizard.
The Account Wizard helps you create an IM account. On the first page, you are asked to select the messaging service that you'd like to use. Click one of the services shown and then click . On the following page, you should enter your registration details for that instant messaging service.
Most services just require you to enter a username or unique identifying number (UIN) and password. The special purpose services Winpopup and SMS work slightly differently, so please see their specific sections. There are a couple of other options that apply to most services that you should look at:
- Remember password
When this is checked, Kopete will store the password for you, so you don't have to enter it every time you connect to the IM service. If you are security-conscious or want to limit access to the IM account you can leave this unchecked.
- Connect at startup
When this is checked, Kopete will try to connect to the IM service as when it starts. If you use a LAN, DSL or other “always-on” connection, this is appropriate; dial-up modem users should turn this off and connect manually when you have dialed up.
Once you've entered your IM details, you can proceed to the Finished! page and then dismiss the wizard and the Configure window.

Now you'll notice that an icon representing the account has appeared in the status bar at the bottom of the Kopete Contact List window. This represents your current presence for this account. click on it and you can go online from the menu that appears. The status bar icon will animate while Kopete connects to the IM service.
Once you're online, if you've used this IM service before, your contacts will be fetched from the server and displayed in the Contact List. To start a chat with a contact, just click their name and a Chat window will appear. The upper part of the window is where the conversation appears - to say something, type into the bottom part of the window and click .
If you've just created a new account you won't have any contacts. See Adding Contacts for details on how to add contacts.
Tip
The shortcut for is set to Ctrl+Enter by default; you can change it in the Chat window using → .

This chapter gives an overview of Kopete's basic features. We will look first at the contact list, where your contacts are displayed, and then at the Chat window, where you carry out a conversation.
The Contact List appears when you start Kopete. It's the main window where you can set your presence, start a chat, organize your contacts, configure Kopete and quit.
You will usually find the menubar at the top of the contact list. If it is not there, you might have turned it off; you can re-enable it with Ctrl+M. Details on each menu item can be found in the chapter on menu structure.
The toolbar holds the most frequently used Kopete actions. You can customize it with → . Notice the and buttons. With these you can hide contacts and groups that are offline.
Kopete makes it even easier to set a status message to let your contacts know about your mood or why you're busy at the moment. Click on the button and start typing to enter a new message, or choose from one of the previous messages you have used.
The Quick Search Toolbar quickly filters the contact list, by typing a few letters from a contact's name.
The Contact List takes up the main part of the window. All your contacts are listed here, in the groups you have chosen for them. You can open or close groups by clicking the plus symbol adjacent to the group. You can reverse the order the groups are sorted in by clicking the Contacts label above the list.
The context menu in the Contact List changes depending on the item under the mouse. Groups, Metacontacts and IM system specific contacts have their own options. In empty areas of the Contact List, the context menu allows you to add contacts or groups, or change the viewing options for the list.
The status bar shows an icon for each IM account you have created. The icons represent the current presence of each account, which can be changed by
-clicking the account icon.Kopete also shows your current status message in the Status Bar>. By clicking on the note icon in the corner, you can change or clear the status message as well.
We introduced you to setting presence in the previous chapter. 'Presence' determines how visible you are on the IM network. To use the network at all, you have to connect to the network, so you can send and receive messages and see others' presence. Once you are connected, most IM systems allow you to indicate what you're doing and whether you want to chat by setting special types of presence such as Away or Free For Chat. The difference presence settings are particular to each away system; but Kopete allows you some control all your IM systems at once by setting them to Away or Available at the same time.
You set your presence for individual IM accounts by status bar at the bottom of the Contact List. The context menu for each account lets you choose the possible presence settings for each IM system.
clicking the account's icon in theTo change all your accounts' presence together, click the , or use the → menu.
To start a chat from the Contact List, simply click a contact. A Chat window will appear.
You can also or . works differently in that it just sends a single message without opening the Chat window, using a simple dialog. Use it for “fire-and-forget” messages.
click a contact and select eitherYou can send files from the Contact List, using the context menu on the person you want to send to. If Kopete supports file transfer on their IM system, there will be a item. Alternatively, you can drag a file from anywhere else in KDE onto their name to start a file transfer.
One of the principles behind Kopete is that it offers a standardized way to use IM systems. Differences between IM systems are smoothed over, making it easier to communicate. We follow this principle in the way contacts are organized. When you use Kopete you just find contacts by name; the actual IM system used is less important. Some people have more than one IM account - Kopete puts the person using the account first.
To support this, Kopete introduced “Metacontacts”, which represent the person you want to chat with. One Metacontact contains all the different IM IDs they may have, making it easy to see with a glance at the Metacontact 'smiley icon' whether someone is available, regardless of which IM system they are using right now.
Kopete lets you create groups to sort your contacts. A contact may be in more than one group. Where possible, groupings are saved on server side contact lists, so if you use other IM programs, group memberships are kept in sync. However, if you change groups in another IM program, Kopete cannot know to move a metacontact automatically; it is up to you to resolve this by hand.
To change the group a metacontact appears in, you can use its context menu to move it or copy it to a new group, or remove it from a group. You can also use drag and drop here - just drop the metacontact on a different group name.
To add a contact, either select → or click the button on the toolbar. This brings up the Add Contact Wizard.
The Add Contact Wizard creates a new Metacontact using one or more IM systems, by leading you through the following pages.
Welcome Page. Here you can choose whether you want to use the KDE Address Book for this contact. Storing IM information in the KDE Address Book will enable other KDE IM programs to share contact information with Kopete and in future KDE applications may use Kopete to send information via IM. If you prefer to keep your IM contacts separated, clear the check box here.
Choose KDE Address Book entry. By choosing an entry from your KDE Address Book, you can use its name as a Display Name in Kopete. You can also create a new entry here. This page doesn't show if you chose not to use the KDE Address Book.
Select Display Name and Group. Here you can enter a Display Name (the name used for this person inside Kopete), and choose the groups they are a member of.
Select IM Accounts. Here you can choose which accounts you want to use to chat to the new contact. If you only have one IM account, you won't see this screen.
Account-specific Add Contact Pages. For each account, you'll get one page where you can enter the UIN, buddy name or Email address, depending on the IM system in use.
Finish Screen. All done. Except if the IM system requires authorization (such as ICQ™) to add a contact to your list - in which case, you'll be prompted after the wizard exits.
You can add contacts to an existing Metacontact using its context menu.
You can rename a contact using → or with the same item on the metacontact context menu.
Some IM systems allow you to set a “Display Name” that is different to your username, such as “Alice loves crypto!”. If you change a contact's name manually, this will override their Display Name. To get it back, open the Properties dialog for that contact and check the Use the name given by the server checkbox.
If you no longer want a contact to be in the contact list, you can remove a Metacontact and all the contacts under it with → .
You can change the metacontact a contact belongs to. In practice, you only have to do this when you have just added multiple accounts to Kopete, and you know that HotDog76 and mikejones@hotmail.com are both the same person.
There are two ways to do this:
- Drag and Drop
The contact icon to the right of the metacontact name may be dragged from one metacontact to another.
- Contact Context Menu
The context menu for contacts (
-click the contact icon) allows you to choose the new metacontact from a dialog.
If the move would leave a Metacontact empty (with no contacts), you'll be asked if you want to delete this contact.
You can configure Kopete using → . See the next chapter for details.
To exit Kopete you should use → , Ctrl+Q, or the Kopete System Tray icon's context menu. If you just close the Contact List window, Kopete will continue to run in the KDE System Tray.
The following keyboard shortcuts are supported in the Contact List window:
Keyboard Shortcut | Action |
---|---|
Up Arrow | Select the previous item in the contact list. |
Down Arrow | Select the next item in the contact list. |
Left Arrow | Close the current group. |
Right Arrow | Open the current group. |
Enter | Start a chat with the selected contact. |
Ctrl+M | Show/Hide the menu bar. |
Ctrl+U | Show/Hide offline users. |
Ctrl+G | Show/Hide empty groups. |

The Chat View usually takes up most of the Chat window and is where the conversation between you and your contacts takes place. Messages appear in the order they are received, with the earliest messages at the top of the view.
You can control the appearance of the Chat View, making it look like other IM clients or create a completely individual look.
Since some IM systems allow you to chat as a group, it is useful to see who is chatting at the moment. The Chat Members List appears to the left or the right of the Chat View. You can change this using → . The contact context menu is available in the Chat Members List.
The Input Area is below the Chat View. This is where you type messages before sending them. You can change the font and color of the message using the usual tools on the toolbar. If the IM system supports this, your messages will appear in color when your contacts read them.
By default, the keyboard shortcut to send messages is Enter.
The Status Bar contains temporary messages, such as notification that someone else is typing, as well as the button.
Kopete lets you carry on multiple conversations in one window, by putting each one in its own tab within the window. The tab titles change color to show when a new message has been received:
- Red
Someone typed a message.
- Green
Someone is typing a message.
- Blue
Someone typed a message containing your nickname.
There are several different ways to control grouping. To configure this behavior, go to the Chat tab of the Behavior page of the Configure Kopete dialog. You can also move chats between windows using the menu, and control the placement of the tabs in the window.
You can use Kopete to chat one to one, or in a group, where the IM system supports this.
To invite others into a chat, drag them from the Contact List into the chat window, or use → → .
Some IM systems allow you to send and receive files. You can access this function from the contact's context menu. If you're already chatting, and want to send a file, simply drag the file from any other part of KDE into the Chat Window, or select the → menu.
The following keyboard shortcuts are supported in the Chat window:
Keyboard Shortcut | Action |
---|---|
Enter | Send the message in the Input Area. |
Ctrl+P | Print the contents of the Chat View. |
Ctrl+S | Save the contents of the Chat View. |
Ctrl+W | Close the current Chat View. The Chat window will close unless there is more than one tab in the window. |
Ctrl+, | Change to the previous tab. |
Ctrl+. | Change to the next tab. |
Ctrl+Shift+B | Detach a tabbed chat into a separate window. |
Tab | Complete a partially typed nickname belonging to someone you're chatting with. |

To configure Kopete, look in the menu.
Kopete defines some shortcuts which are valid in any KDE application.
Global Keyboard Shortcuts | Action |
---|---|
Ctrl+Shift+I | Read Message. This is useful if you have hidden the Contact List window and the system tray icon is animating to tell you you have a new message. |
Ctrl+Shift+C | Show/hide (Dock) the Contact List window. Warning: If you have disabled Kopete's System Tray icon or don't have a system tray, this can make the Contact List vanish - the only way to restore it is to repeat this shortcut. |

We briefly showed you how to add an account in Getting Started. To change an account's settings later, open up the Configure Kopete dialog, with → . Much like the KDE System Settings, the configuration is separated into sections. The icons on the left side of the dialog switch between sections.
On the Accounts page, you can , , or accounts. Editing accounts is much the same as adding them, but note that you cannot change the UIN, buddy name, or whatever account identifier your IM system uses. This is intrinsic to the account. If you want to change this, you will have to add another account with the new account identifier and (optionally) remove the old account.
You can quickly distinguish between multiple accounts using the same IM system by giving a custom color to each account's status bar entry and contact icons. To do so, select the account and click the color selector on the right side of the page.
You can control the priority of accounts using the Up and Down icons on this page. If you have more than one way to message a contact, this determines the IM system Kopete will use to communicate them.
Kopete's Global Identity lets you set your own nickname and photo once for all your IM accounts. You can read these details from the KDE address book entry for yourself, from a single one of your contacts, or add a completely new nickname or photo. If you have an exciting dual life, you can create multiple identities and switch between them in the Identity section.
Behavior covers the way Kopete integrates with your desktop, Away settings, and chat user interface options.
Here you can customize Kopete's desktop integration, and control the way the contact list is laid out.
- Show system tray icon
By default, Kopete places an icon in the KDE System Tray. If you prefer, you can turn this off here.
- Start with hidden main window
This causes Kopete to start with the Contact List window hidden (docked). You can make it visible by clicking the system tray icon or with the Show Contact List global shortcut.
- Open messages instantly
New messages open chat windows as soon as they arrive.
- Use message queue
The message queue is where Kopete puts messages when there is no chat window open. This allows you to be notified of new messages with popup “speech bubbles”; or by animating the System Tray icon. If you choose to disable the message queue, chat windows will open as soon as you receive a new message.
- Use message stack
If you use a message stack, Kopete shows recently received messages starting with the last message received.
- Show a bubble on new message
This option shows a “speech bubble”; coming from the System Tray icon when you receive a new message. You can start a chat or ignore the message. URLs are extracted from the message; if you click a link, your preferred browser will open the link and the message will be dismissed.
- Flash the system tray on new messages
This option causes the System Tray icon to animate when you receive a new message. Clicking the icon will show the message in a chat window.
- Enable events while away
If you do not wish to be distracted by these notifications while you are set Away, uncheck this box.
- Configure Sounds & Events
Sounds, flashing taskbar entries, passive popups and more exotic notifications are supported in Kopete using the KDE notification system. Type
help:/kcontrol/kcmnotify
in Konqueror or select the Help tab in the System Notifications section of the System Settings for more information.To add custom notifications for a contact, right click that contact in the Contact List and select Properties. This lets you start chats, play a custom sound effect, or display a message for that contact or group. Otherwise you can use the “Execute a program” notification to perform custom notifications. As an example, if you have XOSD (X On-Screen Display) installed, you can get OSD online notifications by executing the following command when the “User goes online” event takes place:
echo %s | osd_cat -o 100 -p bottom -A center -f -*-helvetica-*-r-*-*-24-*-*-*-*-*-*-* -O 2 -c gold
OhReally at the KDE Forum suggests having your online notifications read out by a speech synthesizer, using MBROLA like so:
echo %s | sed -e 's/online/onlaain/i' | /usr/local/bin/mbrdico.dutch.female
The 'sed' in the middle phoneticises Kopete's output to so the synthesizer has a better Dutch pronunciation.
- Notify all open chats when I go away
Be careful if you enable this item; it will cause a message to be sent to open chats when you become away, which some people may find intrusive.
You can define as many custom away messages as you like here, and choose from them when you go Away using the button on the main toolbar.
- Raise window/tab on new messages
This causes a chat window to pop up when it receives a new message.
- Show events in chat window
Some IM systems can give extra information, like people joining or leaving chats. This option lets you receive these messages in your chat window.
- Highlight messages containing your nickname
This simply emphasizes messages in a chat that contain your nickname. For more powerful control over highlighting and other events, see the Highlight plugin.
Kopete can send messages using either a “fire and forget” interface that does not wait for a reply, or a chat window where the conversation is visible as it unfolds. Here you can choose which style to use by default.
If you wish to group chats within tabs in a single window, Kopete lets you choose several ways to determine the grouping.
Open all messages in a new chat window
Group all messages from the same account in the same chat window
Group all messages in the same chat window
Group all messages in the same group in the same chat window
Group all messages from the same metacontact in the same chat window
Appearance governs the style of the Chat window, its colors and fonts, and lets you choose your preferred emoticons.
Emoticons (also known as smileys) are combinations of characters such as ;-)
that look like a face, and communicate moods or expressions. Kopete can optionally use graphical emoticons in place of the characters themselves.
On this tab, you can select which emoticon set you prefer, or turn off graphical emoticons altogether.
The style of the chat view can be altered to look like other clients. Installed styles are shown in the list on the left and are previewed in the main panel. See Chat Window Style guide for a document how to make your own style.
Third party styles are available at http://kde-look.org. Kopete 0.12 now supports styles from Adium(an IM program on Mac® OS X). So you can download styles from Adium here: Adium Xtras and select Message View Styles.
To install a style, click . Select an archive file containing the style. To delete a style, select a style in the list and click .
Group consecutive messages is a useful option to make your chats more readable. If you receive several messages in a row from the same contact, they are grouped without repeating the sender name.
- Arrange metacontacts by group
By disabling this, Kopete's groups are hidden, and contacts are divided only into Online Contacts and Offline Contacts.
- Show tree branch lines
Usually Kopete displays contacts and groups as a tree, where group members are indented. For a simpler appearance, you can disable this, so the contact list becomes a flat list. You can also control whether branches are indented here.
- Contact Display Mode
There are several ways you can present the contact list here. Of particular interest may be the Use contact photos when available option, that shows the contact list using photos chosen by your contacts or the KDE Address Book
- Contact List Animations
This controls the degree of animation of the contact list. Turning this off will make Kopete more responsive on slower machines.
- Contact List Auto-Hide
By enabling this, the contact list will automatically disappear a few seconds after the pointer leaves the window.
- Change Tooltip Contents...
You have a lot of control over how much or how little detail appears in the tooltips shown on the contact list using this dialog.
If your contacts tend to choose fonts and colors that you dislike, you can tell Kopete to ignore these and use your regular font.
The Devices section allows you to choose and configure which multimedia devices are used for A/V chatting. Whether this works for you is highly dependent on the hardware you have and how well it is supported by your operating system.
Kopete uses the Video4Linux 2 system for video. This shows a blue square if no video device is found, or a preview if the camera is working. For up-to-date information on Kopete webcam support, see the Kopete Webcam Support wiki page.

You can customize Kopete with special functions that may be useful or just a bit of fun. Bring up the Select and Configure Plugins panel with → and then the Plugins entry.
Plugins can be turned on or off in the list on the left side of the page. Each plugin may be configured on the right side. See the chapter on plugins for details on each plugin.

Kopete calls different IM systems 'Protocols'. When you add an account, it is specific to a single protocol. Although Kopete tries to make instant messaging appear the same, no matter what protocol you use, there are some differences in the level of support for advanced features such as file transfer and multimedia.
AIM supports chatrooms. Use the Join Chat... command on the AIM account menu to join a chatroom. Contact pictures and custom emoticons are also supported.
ICQ has an Invisibility feature which allows you to hide from selected contacts. You may also search the ICQ user folder when adding a contact. A wide range of contact details can be set using the Properties option.
File transfer and multi user chats work. To transfer a file, drag the file from Dolphin or the desktop into the chat window. To invite someone else into a chat, drag them from the Contact List into the chat window. The menu also contains these commands. In addition, WLM supports custom emoticons.
To use file transfer, make sure port 6891 is forwarded to your computer.
Yahoo can send and receive webcam video. It also supports Yahoo mail and the Yahoo address book from the account menu. Conferencing is also possible.
Jabber, also known as XMPP, supports file transfer, conferencing and any other services supplied by the Jabber server. For example, many Jabber servers have a user directory, and some provide transports to other messaging systems. To access services, use on the account menu. Jabber file transfer can work without port forwarding, but enjoys better performance where a direct connection is possible. By default, port 8010 is used for port forwarding, but this is configurable in each account's settings.
Since Google Talk is based upon Jabber, it is well supported in Kopete with the exception of voice chat, which is worked upon.
To configure Kopete for Google Talk: Use your complete Google Mail address as the user name. Check Use protocol encryption (SSL), Allow plain-text password authentication and Override default server information. The server is “talk.google.com” or “gmail.com” and ports 443 or 5223 should be used.
GroupWise Messenger is an enterprise messenging system from Novell Inc. The full range of features are supported, including privacy, group chat, rich text and user search.
Gadu-Gadu is a chat system originating from Poland. At present, Kopete supports basic chat functions.
WinPopup is a way to use Kopete to send and receive messages with Windows® computers on the local network. The WinPopup protocol only supports single, plain-text messages.
As well as the protocols named above, Kopete has support for several other protocols. In most cases, this is not enabled by default or an additional plugin must be installed. Meanwhile, SMS, Skype and SILC are provided in this way. See http://kopete.kde.org for details, however, the Kopete team are not responsible for these protocols.

Kopete offers plugins that provide functions that aren't essential for messaging, but are useful for some people.
Auto Replace allows you to correct frequently misspelled words or save typing certain words using abbreviations.
The Bookmarks plugin creates bookmarks in your KDE bookmarks list from URLs that are received in IM messages.
The Cryptography plugin allows you to send and receive encrypted and/or signed messages.
Cryptography lets you use an OpenPGP implementation to encrypt and sign messages in conversations. Note that this is not the same as an SSL secured chat session. Cryptography can encrypt your messages to a single individual so that only the holder of the matching key can read it. If you wish that the recipient of your messages can verify that you have sent your messages, you may sign messages. Signing and encryption can be used separately or together. When you receive a message, if it has been encrypted, you will see a lock icon. If it has been signed with a verifiable signature (you have the public key of the sender), you will see a pen icon. For a non-verifiable signature, a red pen icon will be shown.
To configure Cryptography, select your private key in the plugin configuration page. Then, using from each meta-contact's context menu, choose their public key. You will be prompted for your passphrase when using this plugin.
Due to limitations in some of the instant messaging protocols that Kopete uses, encrypted messages cannot be sent with those protocols. If you attempt to use an unsupported protocol, you will be warned.
Cryptography can use the public keys stored in your KDE address book for each contact. However, it must be able to know which address book entry is associated with which meta-contact. To provide this information, choose Properties from the meta-contact context menu, and then set the Address Book Link. Cryptography can also export public keys that you have set to your address book. If a meta-contact has an address book link, then the key will go in the correct address book entry, replacing an existing one. If no link exists (possibly because no address book entry exists for the individual in question), a new entry will be created. This entry will have two fields filled: the public key from Kopete and the meta-contact's display name.
Documentation copyright (c) Olivier Goffart (ogoffart AT kde.org)
and (c) 2007 Charles Connell (charles AT connells.org)
Highlight works a little like email filters, in that it allows you to make things happen in response to particular messages. As well as highlighting the text, you can play sounds.
The History plugin, when activated, records conversations using any IM system and allows you to view old conversations later. A item appears in each Metacontact's context menu so you can view the message history for that metacontact.
The following item is added to the Contact List's menus:
- →
(Enabled when a contact is selected) This displays the History browser for the selected contact.
The following items are added to the Chat window's menus:
- → (Alt+Shift+Left Arrow)
This enables you to view the next oldest set of messages from the History in the Chat window.
- → (Alt+Shift+Right Arrow)
This shows the next newest set of messages from the History in the Chat window.
- →
This shows the most recent set of messages from the History in the Chat window.
KopeteTeX allows scientists and mathematicians to hold conversations using the LaTeX markup language. Expressions entered within $$ are rendered as a graphic in the chatwindow, and can be cut and pasted as the original Latex. To use this plugin you must have LaTeX installed
With the Now Listening plugin, let people you're chatting with know what you're listening to, by typing /media
in a chat, or with → in the Chat window.
The OTR plugin allows you to encrypt conversations using the Off-The-Record encryption method. This encryption method basically works like the PGP encryption but it is optimized for instant messaging and handles the key exchange on its own. The only thing you have to do, is to make sure that you really are writing to the person you expect by using one of OTR's authentication mechanisms.
The following item is added to the Contact List's menus:
- →
(Enabled when a contact is selected) You can set the encryption policy for each contact here. Setting this entry to "Default" causes Kopete to use the default setting in the configure dialog
The following items are added to the Chat window's menus:
- → →
This lets you initiate an OTR encrypted session.
- → →
This lets you end a previously established OTR session.
- → →
Use this menu entry if you wish to authenticate the contact.
In the setting dialog you have various options to set the modules behaviour during your chatsessions. The most important of them is the default policy configuration. Set the policy to "Opportunistic" if you wish Kopete to check if you contacts support OTR and establish an encrypted session on its own or to "Manual" if you wish to control each encryption state on your own. The options "Always" and "Never" are recommended only for experienced users that wish to set the policy on a per-contact base. In the "Private Keys" Pane you have the possibility to create you personal keypair for each account. You don't need to do this manually. If an account does not have a keypair it will be generated automatically the first time it is required. In the "Known Fingerprints" tab you have the possibility to see, verify and delete known public fingerprints of your contacts.
You've probably received email from people pretending to be banks, credit agencies, even wealthy Nigerian expatriates. People lie about who they are all the time on the Internet. Authentication is a way to make sure that nobody can lie to you about who they are when they use OTR.
You should authenticate a buddy the very first time that you talk to them using OTR. If you don't, then you cannot really be sure that someone else isn't impersonating them or trying to listen in on your conversation. However, once you've authenticated your buddy once, you don't have to do it again. OTR will automatically do the authentication for all of your future conversations with that buddy.
The only exceptions occur when your buddy switches between multiple computers or multiple IM accounts. In this case, you will need to authenticate once for each computer and account. Once you've done this, your buddy can freely use any of the computers you've authenticated them on, and OTR will recognize them automatically. If your buddy uses a new computer or account that OTR does not recognize, a message will pop up in your conversation window telling you about it.

To authenticate someone, open a conversation with them and click on "Authenticate Contact" on the OTR button. A wizard will be shown, asking you what authentication method you would like to use. Please follow the steps in this wizard.
If the authentication was successful, then you know that you are really talking to your friend. Any imposter should have a hard time guessing what you're typing in, so you'll be able to catch them in the act.
Pipes allows you to pipe incoming or outgoing messages through an external script or executable. An incoming message will be piped through the executable before it reaches your chat window, while outgoing messages will be piped through the executable before they are sent over the Internet. Pipes can receive text in one of three forms:
- Plain text body
The body of the message, in plain ASCII text
- HTML text body
The body of the message, in HTML, as it would be if your chat peer had sent HTML to you, which will be rendered in the chat window
- XML full message
An XML document that describes all the characteristics of the message, including the HTML body.
For most purposes, you probably want to use the plain text body or HTML text body options. These can be used with programs such as translators or summarizers. The XML format is only appropriate for use with a program or script written specifically to work with this plugin. If you would like to write a program or script that does work with this plugin, see the more detailed documentation.
This plugin uses a database to gather information about your contacts' activity patterns. You can use this to see when a contact is usually online, for example.
Text Effect applies funny effects to your messages before sending them, like coloring them or changing the case of the words. Just don't forget you have activated it - we've had bug reports from forgetful Text Effect users!
The Translator plugin lets you define a preferred language for each Metacontact, and then translates messages to or from them using web based translation services such as Google™. Set your own preferred language in the Select and Configure Plugins dialog. Each contact's preferred language can be set on its context menu.
The following item is added to the Chat window's menus:
- → (Ctrl+T)
If you did not turn on automatic translation, this translates the current chat.
Web Presence allows you to publicize your IM presence on the Web. Give it the path to a file on an FTP server (for example), and it will upload a short piece of HTML to that file, which you can include in your homepage. KDE's network transparency makes this simple. Useful for bloggers to make friends with, or you could use it to use IM in your business.
Example: sftp://username@somehost.org/path/to/homes/user/im.html
uses the SFTP protocol to upload your presence directly onto the webserver.
See the KIO manuals for tips on specific network protocols.
Kopete is designed to make it easy to create plugins that give it extra functions. So if you've got a great idea to make Kopete even better, get in touch!

Each menu item is discussed below. When there is a keyboard shortcut that performs a menu item function, the default shortcut is listed with the menu item.
- → →
Go online with all accounts
- → →
Set all connected accounts away
- → →
Set all accounts offline
- →
This displays the Add Contact Wizard, which allows you to add a new contact to your list
- →
Prompts you for the new group's name and adds it to the contact list.
- → (Ctrl+Q)
Disconnects you from all IM systems, closes all the windows and exits the application.
- →
Opens an email-style message window with the selected contact, to send a single message.
- →
Opens a chat window with the selected contact, to have a conversation.
- →
If supported by the IM system, this opens a file selector to choose a file to send to the selected contact.
- →
(Enabled when a contact is selected) Choose another group from the sub-menu, and the contact will move to that group.
- →
(Enabled when a contact is selected) Choose a group from the sub-menu, and the contact will be copied to group. IM systems that allow contacts to be in more than one group on the server contact list will be updated accordingly.
- →
(Enabled when a contact is selected) Choose another account from the submenu, and you can add another way to message that person using that account.
- →
(Enabled when a contact is selected) Sometimes people will message you who aren't on your contact list already. In this case, Kopete creates a temporary entry for them, but to keep them on your contact list, use this function.
- → (Del)
(Enabled when a contact is selected) Removes a contact from the contact list entirely.
- → (F2)
(Enabled when a contact is selected) Renames the contact on the contact list. If you do this, the contact list entry will no longer change if the contact changes their display name remotely. You can re-enable this using the contact's Properties dialog.
- →
The Properties dialog lets you choose custom icons for the selected item, and change its name.
For contacts, you can change the KDE Address Book entry that they are associated with.
- →
(Enabled when a group is selected) Removes a group from the contact list entirely. Any contacts that are only in this group are moved to the top level.
- →
(Enabled when a group is selected) Renames the group.
Kopete has a default KDE Settings menu as described in the KDE Fundamentals with additional entries:
- →
This shows/hides contacts who are currently offline. They will become visible when they go online again.
- → (Ctrl+G)
This shows/hides groups which do not have any members, or where all the members are offline and hidden (see above).
- →
Displays the KDE standard Configure Global Shortcuts dialog, where you can change keyboard shortcuts that work all the time under KDE.
The contact list window has the common KDE Help menu items, for more information read the section about the Help Menu of the KDE Fundamentals.

- → (Return)
Sends a message.
- → (Ctrl+S)
Saves the content of the chat to a file.
- → (Ctrl+P)
Prints off a hard copy of the chat.
- →
This menu lists all the people in the chat. You have access to the same contact menu you get by
-clicking a contact's name in the Contact List, allowing you to perform contact specific actions such as sending them a file, viewing their user info or blocking them.- → (Ctrl+W)
Closes the current chat. If there are chats taking place in other tabs in this window, the window will stay open.
- → (Ctrl+Q)
Closes all chats taking place in this window.
- → (Ctrl+X)
Cutting text works as with most editors: the selected text is removed and put into the clipboard. Note that you can also select text and drag it to a new position.
- → (Ctrl+C)
Copying text works as with most editors: the selected text is copied to the clipboard. Note that you can also select text while holding the Ctrl key, and drag it to a new position to copy it.
- → (Ctrl+V)
Pasting works the same as with most editors: the text from the clipboard is pasted at the current cursor position.
- →
This menu contains all the smileys/emoticons that the current emoticon scheme includes. You can change the scheme in the Configure Kopete Dialog.
- →
This menu allows you to change whether tabs appear at the top or the bottom of the chat view.
- → (Ctrl+Shift+B)
Separates the current chat into its own window.
- →
You can move chats between windows using this menu. Choose the chat window the tab should move to from the menu.
This menu contains items added by the plugins you have loaded. See the plugins chapter for details.
Kopete has a default KDE Settings menu as described in the KDE Fundamentals with additional entries:
- →
This menu controls whether the Participants list appears on the right of the Chat View.
The chat window has the common KDE Help menu items, for more information read the section about the Help Menu of the KDE Fundamentals.

- 8.1. What does Kopete mean? How do I pronounce it?
- 8.2. When I have more than one messaging service under a user's name in my contact list and I click on that user's name, it will message them on the wrong messaging service.
- 8.3. I need to connect via a SOCKS proxy, but I cannot find any proxy configuration options in Kopete. How do I set up Kopete to use SOCKS?
- 8.4. Is it possible to customize the icons I see in Kopete?
- 8.5. I don't see any plugins listed in the “Configure Plugins” dialog. What's up?
- 8.6. I have many <desktops / monitors / computers> and / or I talk to many people at the same time, and as a result I wish Kopete could play a <sound / pop up a message / change my wallpaper / reboot my computer > whenever I <receive a new message / someone goes online / someone goes offline > When will this be added?
- 8.7. How come file transfers don't work?
- 8.8. Why all of this silly single-click behavior? It's very annoying!
- 8.9. Will you make the user-interface skinnable?
- 8.10. I would like a feature in the next version of Kopete.
- 8.11. My Kopete crashed or has/had unexpected behavior (unexpected behavior does NOT fall in the category of "Kopete doesn't act like Pidgin", etc.).
- 8.12. Jabber SSL support stopped working, I get the message that the QCA TLS plugin is probably missing. What am I supposed to do?
- 8.13. I AM behind a firewall. Which ports need to be open for WLM file transfers?
- 8.14. I use Jabber and ICQ together. Whenever I go online with Jabber, I am disconnected from ICQ with an error message about being connected from another client. What's up?
8.1. | What does Kopete mean? How do I pronounce it? |
Kopete's name comes from the chilean word Copete, meaning “a drink with your friends”. Duncan, the original author, recorded an audio sample. | |
8.2. | When I have more than one messaging service under a user's name in my contact list and I click on that user's name, it will message them on the wrong messaging service. |
You can change the order of accounts Kopete tries to message people with by using the Up and Down arrows in the bottom right corner of the account configuration screen. Kopete will try to connect with accounts starting from the top. However, if one service has a higher status value than the others for that user, Kopete will use that one. For example, if a person has three services and two are marked as away and the third is marked as online, Kopete will always try to message the user using the online service. TipIf you click on the small protocol icon on the right of the menu item, instead of on the person's name, you will always try to contact the person using that service! | |
8.3. | I need to connect via a SOCKS proxy, but I cannot find any proxy configuration options in Kopete. How do I set up Kopete to use SOCKS? |
| |
8.4. | Is it possible to customize the icons I see in Kopete? |
You can switch between different emoticons using the Emoticons tab of the Appearance page of the Configure Kopete dialog. To install new emoticons, first look at KDE-Look.org, where there are a lot of additional emoticon sets to download. The emoticons are easy to install - you just place a folder containing the icon files along with an XML file describing the mapping from text to picture in $KDEDIR/share/apps/kopete/pics/emoticons (or $KDEHOME, for example, in /home/joeuser/.kde/).
To replace the protocol icons, you'll have to replace the icons in $KDEDIR/share/apps/kopete/icons, or provide replacements to override them in the same folder under $KDEHOME. At present there aren't any complete replacement sets that you can simply extract there. | |
8.5. | I don't see any plugins listed in the “Configure Plugins” dialog. What's up? |
There are two solutions to this problem. If you used binary packages, then make sure that you used binary packages designed for your distribution, and the specific version of your distribution. Crossing distributions and versions around will not work with Kopete. If there are no binary packages for your system, you must compile Kopete using the source packages. If you compiled your KDE, then Kopete must go in the same prefix as KDE did. If, however, you compiled the source packages, then make sure that your Kopete is installed in the same location as your KDE, if it is not, you can force it to do so by specifying a prefix command to cmake. Example: | |
8.6. | I have many <desktops / monitors / computers> and / or I talk to many people at the same time, and as a result I wish Kopete could play a <sound / pop up a message / change my wallpaper / reboot my computer > whenever I <receive a new message / someone goes online / someone goes offline > When will this be added? |
It is already there (surprise!). Kopete is a KDE application and thus makes use of KNotify for all notifications. For those who don't know, KNotify is a very powerful architecture that lets you do pretty much anything you want when an event occurs in a KDE application. You can play a sound, pop up a passive dialog, log a message, or even run your own custom commands, such as a shell script, to do anything your heart desires. To access this treasure trove, go into the → dialog. This will present you with all the different actions you can take on the events listed just above. As a tip, check out some of your other KDE applications to see what events they let you catch. I for one find a passive popup on new emails in KMail to be very handy. | |
8.7. | How come file transfers don't work? |
There are many reasons for this. WLM was the the first protocol in which we've implemented support for file transfers. Support for file transfers in Jabber and IRC was added in Kopete 0.9.0 (included in KDE 3.3), and ICQ and AIM in Kopete 0.50.0 (included in KDE 4.0.0). Also, file transfers may not work if you're behind a firewall - see WLM section in the protocol chapter. | |
8.8. | Why all of this silly single-click behavior? It's very annoying! |
Kopete is a KDE application. We are not some lame 3rd party application that decides to "look" like the rest of KDE. We also have the "feel" and "integration" aspect of KDE, which means that Kopete follows KDE's standard "Single-click" behavior. If you would like to change this it requires you to change it in all of KDE. You can change to a double-click style by starting System Settings and go to → and change to the option Double-click to open files and folders (select icons on first click). | |
8.9. | Will you make the user-interface skinnable? |
The only answer for this is no. Kopete was invented to be a KDE Instant-Messenger and this also includes having a KDE Look-n-Feel. By adding skins we would break this rule and having both skin-support and skinless-support at once is impractical as well. Just select a different style in KDE's System Settings and be happy to have transparent menus and other neat eye-candy today's KDE offers. You can, however, run kopete using a different style. Just run | |
8.10. | I would like a feature in the next version of Kopete. |
Please go to KDE Bugzilla and file a wishlist item under the application 'kopete'. Please be very detailed and proof-read what you have written to us. This is NOT a guarantee that we will add this feature in any version, but allows us to consider it. | |
8.11. | My Kopete crashed or has/had unexpected behavior (unexpected behavior does NOT fall in the category of "Kopete doesn't act like Pidgin", etc.). |
Please report this bug to us by going to KDE Bugzilla and file a bug report under the application 'kopete'. Bugs will only be accepted if they are in English, they are detailed, and if a crash was involved they contain a backtrace (the text in the tab marked Backtrace once Kopete has crashed). If you are using Kopete git, however, please mail us at Kopete developers mailing list instead of filing a bug report. | |
8.12. | Jabber SSL support stopped working, I get the message that the QCA TLS plugin is probably missing. What am I supposed to do? |
As the error message indicates, you are missing the QCA TLS plugin, which handles the Jabber plugin's TLS/SSL encryption. Install the package qca-tls (and eventually qca-ossl) or retrieve the plugin from its homepage. Please note that you only need to install the qca-tls plugin, not the QCA library itself. A recompilation of Kopete is not necessary, in fact not even a restart. In case you have installed the plugin and it still won't work, Qt can probably not find it. Since qca-tls installs itself as a Qt™ plugin, you will have to make sure that it gets installed to the plugin directory of the Qt™ version you are using to run Kopete. | |
8.13. | I AM behind a firewall. Which ports need to be open for WLM file transfers? |
If you are behind a firewall, port 6891 needs to be open to inbound TCP traffic. | |
8.14. | I use Jabber and ICQ together. Whenever I go online with Jabber, I am disconnected from ICQ with an error message about being connected from another client. What's up? |
Remember when you played with ICQ transports on that other Jabber client? You set up an “ICQ Transport” which allows you to talk to ICQ people from Jabber. ICQ doesn't allow multiple connections to the same account, and disconnects you. Look in your Jabber contacts for a contact of the form 123456@icq.jabber.org and delete it. |

Kopete: copyright 2001-2007, Kopete Developers
This documentation is licensed under the terms of the GNU Free Documentation License.
This program is licensed under the terms of the GNU General Public License.
Pali Rohár (pali.rohar at gmail com): Developer and Maintainer
Duncan Mac-Vicar Prett (duncan at kde org): Original author, developer, and project leader
Till Gerken (till at tantalo net): Developer, Jabber maintainer
Olivier Goffart (ogoffart at tiscalinet be): Lead Developer, WLM Plugin Maintainer
Andy Goossens (andygoossens at telenet be): Developer
Grzegorz Jaskiewicz (gregj at pointblue com pl): Developer, Gadu-gadu Plugin Maintainer
Jason Keirstead (jason at keirstead org): Developer
Matt Rogers (mattr at kde org): Lead Developer, AIM and ICQ plugin maintainer
Richard Smith (lilachaze at hotmail com): Developer, UI maintainer
Will Stephenson (lists at stevello free-online co uk): Developer, icons, plugins, manual author
Michel Hermier (michel.hermier at wanadoo fr): IRC Plugin Maintainer
Andre Duffeck (andre at duffeck de): Developer: Developer, Yahoo plugin maintainer
Michaël Larouche (michael.larouche at kdemail net): Developer, WLM, Chat Window.
These people have moved on from Kopete, so don't contact them for Kopete support. We're eternally grateful for their contributions.
Christopher TenHarmsel (tenharmsel at users sourceforge net)Developer, Oscar hacker
Ryan Cumming (ryan at kde org): Core developer
Richard Stellingwerff (remenic at linuxfromscratch org): Developer
Hendrik vom Lehn (hennevl at hennevl de): Developer
Stefan Gehn (sgehn at gmx net): Developer
Robert Gogolok (robertgogolock at gmx de): Developer
Nick Betcher (nbetcher at kde org): Original author of ICQ, AIM and IRC plugins
Daniel Stone (dstone at kde org): Original Jabber plugin author
James Grant (topace at lightbox org): Developer, importer Plugin author
Zack Rusin (zack at kde org): Developer, old Gadu-gadu Plugin author
Gav Wood (gav at kde org): WinPopup Plugin author
Martijn Klingens (klingens at kde org): Developer, WLM hacker

Table of Contents
Kopete is part of the KDE project http://www.kde.org/.
Kopete can be found on the download site of the KDE project.
Development versions may be downloaded at http://kopete.kde.org.

If you installed Kopete as part of your distribution, you probably have these installed already.
The Gadu-gadu plugin requires the libgadu package, see this page for details.
The Now Listening plugin needs libxmms if you want to access what xmms is currently playing; this should be available in your distribution but is available as part of the xmms package at the xmms homepage.

For detailed information on how to compile and install KDE applications see Building and Running KDE Software From Source
Since KDE uses cmake you should have no trouble compiling it. Should you run into problems please report them to the KDE mailing lists.

Beginning with Kopete 0.12, we are now using Adium format for our Chat Window style. The theme format is based on HTML templates and CSS. They are easier to make and develop, only a knowledge of HTML and CSS is needed. Also, styles can have variants (defined as CSS file) which add more customization value :).
Adium format consist of a directory structure, HTML templates, CSS files and keywords that are replaced each time the template is processed. The final conversation is a XHTML page where messages are added with DOM operations. The central element is a div element named Chat
. Before and after this div element goes the Header and Footer template. Messages are children of the Chat
div element.
A style must respect this directory structure. Code in Kopete are thinking around this directory structure. When archiving the style, archive the styleName
directory. The directory structure is a structure of a Mac OS X bundle for those familiar with that operating system. Also you must respect the case displayed here, because a UNIX system is case-sensitive.
styleName\ (can have .adiumMessageStyle as suffix, because in Mac OS X it is a bundle) Contents\ Info.plist Resources\ main.css Header.html Footer.html Status.html Incoming\ (and Outgoing\) Content.html NextContent.html (for consecutive messages) Context.html (for message history) NextContext.html Action.html Variants\ *.css
This is a special div element used internally. It is a placeholder to indicate where to insert the next message. If it is a new message, it is removed and the new message take place. But if it is a consecutive message, the div element is replaced with the content of new message. This special div element is required in Content,Context,NextContent,NextContext templates. Though it not harm to put it also in Action and Status template.
Template description.
Header.html
(Required)Use the Header template to display a nice header to the conversation. This template is inserted before
Chat
div element. If you don't use it, just put an empty file.Footer.html
(Required)This is mostly the same as Header but it is for the footer of a conversation. This template is inserted after
Chat
div element. If you don't use it, just put an empty file.Status.html
(Required)This template is used to display an internal message. Internal messages such as status change, message from Kopete (e.g. Incoming File Transfer). When the style do not supply an Action template, it is used to display Action message.
Incoming/Content.html
,Outgoing/Content.html
(Required)The content template is the message core. Think it as a block that will hold messages. Make sure it is ready to receive consecutive messages, don't design it to only display one message. Consecutive messages will be inserted at the div insert element.
Incoming/NextContent.html
,Outgoing/NextContent.html
(Required)The NextContent template is a message fragment for consecutive messages. It will be inserted into the main message block. The HTML template should contain the bare minimum to display a message.
Incoming/Action.html
,Outgoing/Action.html
(Optional) (Kopete Extension)This template is a Kopete extension to the Adium format. It is available for Incoming and Outgoing direction. Action messages are special message to tell we are doing an action. Example: "/me is installing Kopete" would be displayed as "DarkShock is installing Kopete".
Incoming/Context.html
,Incoming/NextContext.html
,Outgoing/Context.html
,Outgoing/NextContext.html
(Optional)These templates are not used in Kopete. In Adium, they are used to display history. It is mostly the same thing as Content and NextContent but with some differences to distinguish from normal messages.
HTML template are used to describe how the structure is made. But all the style is described in CSS files. main.css
is the main style, where variants are just alterations of the main style. Examples of variants are different colors, no display of user photo. Both main.css
and variants and imported in final XHTML page.
This is the main CSS file which is common for all variants. This file should contain all the main description of the style.
Here is two tips for testing a style while creating it.
In Chat Window, you can save a conversation. This is a copy of the internal XHTML page displayed. Use it in Konqueror to test your CSS files.
Keywords are likes holes to fill with details. On each new message, they are replaced with the correct value corresponding to their context. To fully support all features of Kopete, we added some keywords extensions to the Adium. Also some keywords are only available in certain context.
Keywords list for Header and Footer templates.
There keywords are processed at the beginning of the chat.
%chatName%
This is the name of the current chat session. For a typical session, it display the name of the contact and his status. For IRC, it display the topic of a channel.
%sourceName%
,%destinationName%
These are the name of the contacts for a chatsession.
%sourceName%
is your name.%destinationName%
is the name of the contact you are chatting with. Prefer%chatName%
over those, because they could be confusing for groupchat and IRC.%incomingIconPath%
,%outgoingIconPath%
These are the image/photo/avatar of the contacts for a chatsession. Incoming represent the contact photo and Outgoing represent your own photo. If they are no photo available, it use
buddy_icon.png
image which is located inIncoming
orOutgoing
directory.%timeOpened%
,%timeOpened{X}%
It is the time when the chat session begin.
%timeOpened%
use the default time format for the current locale. If you want to use a specific time format, use%timeOpened{X}%
where X is a string containing the time format. The time parameters are the same as the glibc functionstrftime
. Do man strftime to get the list of available parameters.
Keywords list for Content, NextContent, Context, NextContext, Action template
There keywords are processed for each message.
%userIconPath%
This is the image/photo/avatar of the contact associated with the message. If they are no photo available, it use
buddy_icon.png
image which is located inIncoming
andOutgoing
directory depending of the message direction.%senderScreenName%
This is the contact ID of the contact associated with the message. Examples: me@hotmail.com, 45566576, JohnSmith.
%sender%
This is the name of the contact associated with the message. It use MetaContact display name as a source.
%service%
Display the name of the service associated with the message. Examples: Jabber, Yahoo, MSN.
%textbackgroundcolor{X}%
In Kopete, this keyword is used to represent the highlight background color. Ignore parameter in the braces and only use it as
%textbackgroundcolor{}
.%senderStatusIcon%
(Kopete extension)Display the status icon of the contact associated with the message. It's a file path.
%senderColor%
,%senderColor{N}%
(Kopete extension)Generate a color from the sender contact id. Can be used to display a different color for contact nickname.
%senderColor{N}%
where N is a positive number. If N is greater than 100, it represent a lighter color than the contact's color. If N equal 150 it is a color which is 50% brighter. If N is less than 100 then it is a darker color. Useful for having a background colored differently for each contact.If you want to use theses colors in a variant, but not in the main style, you have to workaround.
<div style="color:%senderColor%;border:none;border-color:%senderColor{40}%;"><p class="message">...</p></div>
you can apply color to the p.message element in your
main.css
file, and in your variant put something likep.message { color:inherit; border-color:inherit; }
Keyword list common for messages and Status.html
%message%
The message itself. This is a HTML fragment.
%time%
,%time{X}%
The time when the message was received.
%time%
use the default time format for the current locale. If you want to use a specific time format, use%time{X}%
where X is a string containing the time format. The time parameters are the same as the glibc functionstrftime
. Do man strftime to get the list of available parameters.%messageDirection%
(Kopete Extension)Represent the message direction, if the message must be displayed right-to-left or left-to-right. The values are either "rtl" or "ltr". Read Message Direction guideline to see how to use this keyword properly.

The Kopete Chat Window Style Guideline is a set of things that your Chat Window style must support to be compliant with Kopete.
Your style must show highlight. In Kopete and Adium, the %textbackgroundcolor{}%
is replaced with the highlight color. Add this style attribute: background-color: %textbackgroundcolor{}%
to the HTML element that display the message.
This guideline is for people rewriting old XSL styles to the new format. All styles must supply a template for consecutive messages. It is now a default feature.
The Contents/Info.plist
file is not used in Kopete yet. But if you want your style to be compatible with Adium, you must supply that file. Here a basic example file. Strings to replace are enclosed with "$".
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleGetInfoString</key> <string>$Your style full name$</string> <key>CFBundleIdentifier</key> <string>$Your style ID in the form: com.adiumx.smooth.operator.style$</string> <key>CFBundleInfoDictionaryVersion</key> <string>1.0</string> <key>CFBundleName</key> <string>$Your style name here$</string> <key>CFBundlePackageType</key> <string>AdIM</string> <key>MessageViewVersion</key> <integer>3</integer> </dict> </plist>
You must place a file named buddy_icon.png
in the Incoming
and Outgoing
. These images will be used when the contact have no photo.
%messageDirection%
keyword is present for languages in the world that write right-to-left. It define the message direction, if it is "rtl" (right-to-left) or "ltr" (left-to-right). Add this style attribute to the HTML element that display the message: direction: %messageDirection%
. Style preview in appearance config include a right-to-left to check if your style display it correctly. It should begin the string from the right.

Table of Contents
Beginning with Kopete 1.0, Kopete ships with a plugin called Pipes. Pipes allows you to pipe incoming or outgoing messages through an external script or executable. An incoming message will be piped through the executable before it reaches your chat window, while outgoing messages will be piped through the executable before they are sent over the internet. Pipes can receive text in one of three forms:
- Plain text body
The body of the message, in plain ASCII text
- HTML text body
The body of the message, in HTML, as it would be if your chat peer had sent HTML to you, which will be rendered in the chat window
- XML full message
An XML document that describes all the characteristics of the message, including the HTML body.
This document describes the specifics of the XML format, and how to write a program that can handle it.
Here's an example of what a program will receive in its standard input stream:
<?xml version="1.0" encoding="ISO-8859-1"?>
<message subject=""
route="outbound"
importance="1"
formattedTimestamp="11:06:46 am"
timestamp="Sat Dec 1 11:06:46 2007"
type="normal"
mainContactId="spacemonkey1234"
time="11:06 am" >
<from>
<contact contactId="tdurden"
protocolIcon="aim_protocol"
userPhoto="/home/kde-devel/.kde4/share/apps/kopete/oscarpictures/tdurden.jpg" >
<contactDisplayName dir="ltr" text="tdurden" />
<metaContactDisplayName dir="ltr"
text="Tyler" />
</contact>
</from>
<to>
<contact contactId="spacemonkey1234"
protocolIcon="aim_protocol"
userPhoto="/home/kde-devel/.kde4/share/apps/kopete/avatars/User/7e542903e0ac7519a7496e85f5a5b99d.png" >
<contactDisplayName dir="ltr" text="spacemonkey1234" />
<metaContactDisplayName dir="ltr" text="Robert Paulson" />
</contact>
</to>
<body dir="ltr"
bgcolor="#000000"
color="#000000" >
<span style=" color:#000000;">hey</span></body>
</message>
This XML is loosely based on the XSD used for chatstyles found at the Kopete website. This code represents one message. There are a few things to note:
The "timestamp" attribute in the "message" element is in ISO 8601 standard format.
The "protocolIcon" attribute in the "contact" element is chosen like this:
If the Contact object has the photo property set, that path is used.
If not, the Contact's MetaContact is asked for a picture path, and that is used regardless of being null or not.
The "color" and "bgcolor" attributes in the "body" element are empty strings if they are not set in Kopete. They are in web color format.
The content inside the "body" element has "<" escaped, so it is not confused with the actual XML structure. Obviously, to correctly interpret the body as HTML, one would have to convert the "<"s to "<"s.

Your program will receive XML in its standard input stream, it will have the opportunity to modify it, and then it must hand it back to Kopete by way of its standard output stream. If your program modifies the following elements, the internal knowledge that Kopete has of the message will be modified to reflect your changes.
"message" attribute "timestamp" but not other time attributes
"message" attribute "subject"
"message" attribute "type"
"message" attribute "importance"
"body" attribute "color". This is usually set to a web color number, but can be set to a name. The names defined by SVG are accepted by QColor in Qt 4, so they are the only names that may be used.
"body" attribute "bgcolor" — same behaviour as "color"
content of element "body"
If you modify elements or their attributes not mentioned above, your changes to those elements will have no effect.

Some attributes have certain acceptable values. The Pipes plugin's output will always have legal values. If your program chooses to change these attributes, they must remain legal. If not, Kopete's behavior is undefined.
- Attribute "route" in element "message"
Must be "inbound", "outbound", or "internal"
- Attribute "type" in element "message"
Must be "action" or "normal"
- Attribute "importance" in element "message"
Must be "0" for low, "1" for normal, and "2" for high
- Attribute "dir" in many elements
Must be "ltr" for left-to-right or "rtl" for right-to-left

Table of Contents
XMPP or Jabber (these words actually mean the same) is the name of an open, decentral network protocol which is used for instant messaging. It is designed as a server-client-infrastructure with many servers all over the Internet, where everyone can get an account. The servers are normally connected to many clients on one side and to other XMPP-servers of the Internet on the other side. Let's invent a small example to explain how it's working:
Romeo loves Juliet and wants to communicate with her through the Jabber network. He can write messages from his client (which is connected with montague.net
) to his girlfriend, whose client is connected to a server called capulet.com
.
When he registered an account on a server, he chose a so-called JID (Jabber-Identifier). This JID works basically like an E-Mail-Address and is connected to the server's name with an “@”. An example for Romeo's valid JID is romeo@montague.net
.
In order to talk to other people, Romeo has to add their JIDs to his contact list. They may be connected to the same server (e.g. bob@montague.net
) as well as they can originate from another server (e.g. peter@wasinet.org
or, of course, juliet@capulet.com
).

Visualization of the Jabber network
Jabber/XMPP is of course capable of a lot more services (e.g. end-to-end encryption of the messages, voice- and videochat, groupchat), which the tutorial will partly introduce later.
Two very big instant messaging providers use Jabber/XMPP on their servers in the background: Google Talk and facebook chat. Accounts within these systems can be used just like normal Jabber accounts in Kopete. Details will be explained later or can be found at these provider's websites.
With this information we can begin with the main part tutorial: How to set up a working jabber-client and which nice features Kopete has got.


Icon of Kopete
Of course, you have to get Kopete first before you will be able to work with it. If you use a GNU/Linux-system there are very good chances you can find Kopete already installed (if you have already installed the KDE Software Compilation) or it will be in one of your distribution's repositories.
Now install Kopete and start it for the first time.

When you now start Kopete you will see an empty window.

Empty Kopete window
In the bottom section it says Click here to add an account. Click there or open → to create a new account. We actually want to create a Jabber-account, so we select the menu-item Jabber and click Next. After clicking on Register new account, a new window opens where we can write in a Jabber-server, where the account shall be created.

Configure Kopete
You can either manually write it into the textbox Jabber server or select it from the provided list, which appears after clicking on the button Choose...

Server selection dialog
After selecting a server you are able to complete your desired Jabber-ID, i.e. your username. Add your preferred name in front of the “@” in the field Desired Jabber ID. After filling in your password and repeating it you should tick the checkbox Use protocol encryption (SSL) for having an encrypted client-server connection.

Create your account
Some servers might not be capable of this option, but most of them are. Now click on Register to finish the registration.
Congratulations, you have now registered a new account on a Jabber server!

You now own an account on a Jabber server and Kopete asks you for Step two: Account information. Kopete adds your Jabber ID and your password into the required fields automatically. If you want Kopete to remember your password in order to not type it in every time you connect with your server, check Remember password.
If you want to use your existing accounts of Google Talk or Facebook chat in Kopete (these are actually Jabber servers, too), use your GMail address or your facebook account data (explained here) to connect to these servers.
Optionally you can check Exclude from connect all. This advises Kopete not to go online when you go online with all of your Kopete accounts (as Kopete is a multimessenger with support for many other protocols like ICQ or MSN). When you checked this, you will later have to go online explicitly for this one account every time you want to connect with your server.
Your Kopete should now look like this:

Account information window
Click on the Tab Connection to check additional options. Especially selecting Use protocol encryption and the unselection of Allow plain-text password authentication should be chosen for basic security reasons.
The default server information should be okay, if you are in a normal home network without special firewall configuration.
The section Location Settings is another specialty of Jabber: You can set so-called “Resources” to identify where you chat from. For example if you log in to Jabber from your mobile phone and your notebook at the same time (yes, you can do that) the resource explains your contacts where you are. So you could call it “Notebook” or “Android”, depending on which device you're installing Kopete. Remember that your resources can be seen from your chat partners (they will be added to the JID like this: romeo@montague.net/Notebook
), so you might consider privacy issues while choosing your resource name.
In our example, the Resource will be set to Laptop
. The priority is mainly useful when you handle multiple devices and tells your partner's client which of your devices being online at the moment (e.g. your mobile phone or your laptop) to contact in this case. The highest priority number of your resources being online receives the message.

Set the account configuration
The next tab, File Transfer, is normally not affected when setting up a Jabber account in a normal network.
Finally, there are some privacy configurations in the tab Privacy, they are mostly self-explanatory. The option Use old inline PGP format for signed and encrypted messages (read here what PGP means) is not recommended, because there exists a method to do this with the built-in OTR, which will be explained later in this tutorial.
At this point you can click Next again and your account is configured now. You can choose an optional color for your account and when you feel ready to connect the very first time to your Jabber server, the checkbox Connect now has to be ticked.

Last step of configuration
Now you can finish the configuration.
Otherwise you can manually connect to the server by clicking → in the Kopete main window or by right-clicking the Kopete symbol in your tray and selecting → . If you chose the option Exclude from connect all earlier, you will have to log in by right-clicking on the Kopete tray icon and selecting → .

Going online

After your first login, your Kopete window is quite empty. There might be a default contact added by your server which perhaps sends you a welcome message, but there are no real contacts in your roster (this is by the way the word for “contact list” in the Jabber world). The first step for adding friends in Jabber is, of course, asking them for their Jabber ID. When you got one, you can immediately add it to Kopete. You can either click → or → → . A new window appears asking for the Jabber ID we want to add to our roster. Just type it in and click OK. The Group option is used, when you specified groups of contacts (e.g. “family” and “work”). A connection to your KAddressBook can be established with Address book entry, so that you can exchange information like profile pictures between the two applications.

Adding a friend
Now you've added your first friend to your roster. But before you can start writing messages to him or her, your contact has to authorize your request. Until this happens, the contact appears with a small yellow exclamation mark on the right side of his contact field.

Your contact
When your friend authorized your request or added you to his or her roster, its icon will appear colored when online. The exact meanings of the different icons (Online, Away etc.) can be seen at Status where you can set them yourself, too. You receive a notification when you are authorized.
Normally, your friend will put you also to his or her contact list, so you have to authorize this request by yourself, too. Kopete notifies about that at the bottom with a green flag and the description of the request. Click on Authorize to accept. The notification area can be closed by clicking on the cross on the upper-right side of the area.

You're now added by your contact
After that procedure you should see a contact list like in the next image.

Your contact is fully authorized
You successfully added your first contact to your roster now.

You can start chatting with a contact by clicking on the name. A new window will open and you can type in messages into the smaller field at the bottom, where the cursor already resides. When you want to send your text, hit Enter or press the Send button. You and your partner can communicate now via Jabber.

Your first chat
To transfer files via Jabber click on Send File and select the file you want to send in the popup window. You will be notified when the transaction is complete or failed for some reason.
Warning
This may not work in some cases due to incompatible configurations of some servers
Jabber is not only capable of communicating with one person. You can use Group Chat to do an IRC style discussion, where many people can talk with each other. To use Group Chat, you have to right-click on the Kopete systray icon, and select → , where yourJID
stands for your own Jabber ID. A new window appears where you can join a chatroom.

Groupchat
Click on Query to show the list of existing chatrooms on your Jabber server. Select one and press Enter to enter this room.
Alternatively you can type in and create your own chatroom by writing its name into the line Room. Then press Enter or click Join to join.
After you created the chatroom, you'll see a new field appearing in your Kopete window with the JID chatroomname@jabber.example.org
. Treat it as a normal contact, i.e. you have to click on this JID to chat etc.
At this point you have set up a working Jabber client and are in principle able to chat with your contacts. But for a better experience of Kopete, you are able to configure the application for your best needs. A set of Useful configuration hints is the content of the next page in this tutorial.

These hints all refer to Kopete's main configuration window residing under → . Be sure to click on Apply or OK if you want your changes to be saved.
All adjustments affecting your account setup and configuration of multiple accounts in Kopete (Jabber/XMPP as well as ICQ, MSN and many other messaging protocols) can be found under the tab Accounts. If you want to set your personal information or are willing to use a contact photo, click on Modify Identity... and make your settings. A photo can be uploaded by clicking on the small icon on the left hand side at the bottom of the image area.

Setting identity
The next tab in the vertical list at the left hand side is Contact List. These settings are mainly self-explanatory and it seems useful to enable Use contact photos when available. The other three horizontal tabs (Colors & Fonts, Advanced and Layout) include quite special settings you will perhaps fine-tune when you have used Kopete for a few weeks.
The Status configurations enable you to set your default status messages when you're set as Online, Away, Invisible etc.
Clicking on Behavior opens a quite detailed set of configuration. The most interesting ones, that can be found in the tab General are Message Handling and Initial Status. The first one decides if incoming messages from your contacts open instantly a new window or if they are queued until you open Kopete yourself. The second one tells Kopete if it shall go online when you start the program. When you set this, you are always available for your contacts once you run Kopete. The tab Events lets you set in what cases Kopete notifies you via your computer's notification system (in most cases KNotify). When you want Kopete to set your status automatically to “Away”, open the tab Away Settings and enable the first checkbox. You can set the time that has to pass after your last action (keyboard input or mouse movement) that Kopete will set you as “away”. The default value is 10 minutes. Options located in Chat are again self-explanatory and already set to useful values.
The next item in the vertical row on the left is Chat Window. The first tab in there, Style, can be used to set another appearance than the default one. You can also install your own styles or download new ones from the Internet by clicking on Get New.... When you type in an Emoticon during a conversation, Kopete will convert it into a graphical emoticon by default. To disable this feature or to use another set of emoticons go to Emoticons. The last tab, Colors & Fonts is again self-explanatory and configures these preferences of your chat window.
Webcams are supported in Kopete, but at the moment (November 2010) there are still some difficulties concerning video chat, so settings in Video are made at your own responsibility, because it's quite possible it doesn't work in the right way. The KDE Forums may be helpful while dealing with webcam issues.

A very powerful feature of Kopete is the capability of using plugins. There is a set of plugins pre-installed (new ones can be installed for example with your Linux® distro's package manager) and they can be enabled and configured under Plugins. You can enable them by setting the tick into the respective checkbox. Most of them are again self-explanatory, but the most useful ones will be explained here anyway. A very helpful plugin is the History. With this option enabled, Kopete will log all your chats and write it onto your hard disk. You can read it in your chat window, when you select the View History icon or you open it with → .
One of the most important plugins considering privacy issues is OTR. This piece of software encrypts your entire conversation from one end to the other and makes it impossible for third persons to read your conversation. After you enabled the plugin, you have to open its settings (click on the wrench icon) and Generate a key.

Generate an OTR key
This may take a while and you have to wait until Kopete finished. After that close the OTR window with OK and Apply the changes. You eventually will have to restart Kopete after this. Then open a chat window of the contact you want to safely communicate with. Go to → → or use the icon → . Kopete will start the session if your contact is capable of OTR, otherwise you'll receive an error message.

First use of OTR
To ensure your added contact is really the one he or she is pretending, it's necessary to authenticate him or her one time. You can do this by calling → → . You may choose between three options:
The first one is to ask your chat partner a question whose answer can only be known by him or her and you.
The next possibility is a secret passphrase your partner has to know (you may consider giving the secret to him or her via another secure communication channel, e.g. telephone).
Thirdly, there's the option of manually checking the OTR fingerprint. This is the most secure option, but it's not very handy and if you can choose one of the others it may be more comfortable and faster. When checking the fingerprint, you have to ask your partner for his or her OTR fingerprint over a secure connection (e.g. telephone or encrypted E-Mail) so that the fingerprint can be checked.
Let's assume we choose option one and ask our partner a question. Type it into the field and define the expected answer your partner has to give, so that he or she can be authenticated.

Asking a secret question
When we continue, your partner will see the question and if the answer is correct, OTR is set up ready now.

Finished OTR setup
Your partner may do the same thing in return, so when you see a window asking you for authentication just answer the question and you are an authenticated user in your friend's contact list, too.

OTR authentication
Every time you communicate safely, you'll see the green armored keylock icon at the top of your chat window. To finish the secure connection, you can either close your chat window or click on → .

Table of Contents
This tutorial will help you to use ICQ, a common chat protocol in Kopete.
ICQ is a proprietary instant messaging program, first developed by the Israeli company Mirabilis. It uses AOL's OSCAR network protocol for sending the text messages. To identify people, it uses a number, called UIN (Unified Identification Number). If you register an ICQ account, you also have to enter an e-mail address. Some ICQ clients support login with that e-mail address instead of your UIN (but not Kopete).
Offline messages
multi user chat
file transfer
Privacy: according to the security analyst Jeffrey Carr, the russian secret service could gain access to chat protocols. For further information see here
Spam: there is a lot of spam (unwanted advertisement or viruses) in the ICQ network
Copyright: according to the ICQ Acceptable Use Policy, you allow ICQ to use posted material in any manner they want

Before you can chat via ICQ, you have to create an ICQ account. If you already have one, you can skip this page.
Go to the registration page with your preferred web browser (e.g. Firefox, Konqueror, Chromium) www.icq.com/register

Enter you data
Now you have to wait until you get an e-mail from ICQ, which contains your verification link.

click on the verification link in your e-mail to verify you registration
Now you have your ICQ account! But at the moment, you can only login with Kopete using UINs (Unified Identification Number). ICQ does not show you your UIN by default. You have to go with your browser to www.icq.com/people and login there.

login on www.icq.com
Then you have to go to your profile:

click on My Profile
Now you will get an information page about your account. If you click on “More about me” you will see an entry called ICQ#. This is your UIN:


The first time, you start Kopete, you will see a window like this:

Kopete on the first startup
To add your ICQ account click on Click to add an account. Or if you have already entered another account (like MSN or Jabber) you go to menu → and click on Add Account.
Now you see a list of all chat protocols available for Kopete. In this case, as you want to use ICQ, you have to choose the ICQ entry:

Choose your protocol
Now you see the configure dialog for your account. Click on Basic Setup above in the tab bar. There you have to enter your UIN. If you don't want to enter your password every startup, you can add your password, too.

Basic account setup
The Account Preferences tab contains more detailed settings:

More settings
Kopete should work without changing any settings here. So if you don't understand points mentioned below, don't panic, just skip this section.

Require authorization before someone can add you to their contact list: Choose this option if you want to be asked before someone else can add you to his buddy list. Normally, everyone can search you and add you to his list. This means every stranger you don't even know can see whether you are online or not or can send you messages. If you don't want this, you can check this options and afterwards you will be asked if you want to confirm someone before he can chat with you.
Hide IP address: If you don't want others to see your IP, you can check this option. The IP address is an ID to identify you in the Internet. This number is unique. An average Internet user cannot get your name out of your IP Address, only your provider can do this! ICQ saves your IP address anyway for a specific time. So it is no real privacy problem not to choose this option.
Make my status available via ICQ's unified messaging center: If you choose this option, your status will be published on the messaging center (visible for everyone at www.icq.com/people).
Override default server information: If you want to modify the address where Kopete log in to the ICQ network, this option makes it possible (normally you won't need this setting).
Enable Proxy: connect through a Proxy server. Proxy servers are servers that transfer requests. Some companies, schools and universities use these servers to deny access to some websites. Users connecting from their home won't need this setting.
Port Range: This option tells Kopete which ports should be used for peer to peer connection. Further explanations of the function of ports would go too far here. If you want more information take a look at the Wikipedia article. Normally you won't get any problems with the default settings.
Timeout: defines, how many seconds Kopete should wait before it drops connection. For example you send a file to one of your contacts but your contact's Internet connection is troubled so he does not get the file. This option tells Kopete how long it should try to send the file. Normally you don't have to change this.
Default encoding: sets the encoding of the messages. Windows users will use the “windows-125*” (windows-1250 to windows-1258) encoding, so if you are going to chat with windows users, choose this option. And even if you only talk to persons not using windows it is likely that they will also use the windows-125* setting (because they perhaps chat with people using windows). The different windows encodings are for different countries. Choose the most fitting one (for example the “Windows-1252 Western” for countries like France or Germany). The difference between these encodings are only some special characters,so if they are not displayed correctly, try another.
Now you have successfully configured your ICQ account. You can click on Next and Finish. If you have more than one account, you can choose different colors for them, so you can easily see which contacts come from which account.

Now you have connected Kopete and your account. The window should look like this:

Connected
To add a contact press Add in the toolbar and choose your account (in this case it is your UIN), or you can use the menu → → . There you can enter the UIN of the person you want to add.

If you do not know the UIN, but perhaps the nickname or the e-mail address of a person, it is also possible to search for your contact. Click on the Search button.

It is also possible to search UINs

If you use ICQ, it is very likely that you will get added by someone else. If this happens, Kopete will display a message which contains the UIN of the person who wants to add you to his list.

authorization request
To get more information about the person click on Info.... A window will open which contains all the information available about the person.

Information
Now you can authorize or block the person. If you authorize, you can chat with him and vice versa, if you block him, he can't talk with you.

Table of Contents
This DRAFT document defines how to make a theme of emoticons typically used in instant messaging applications
The basic scheme is very simple. The theme consists in one sub directory which contains all the pictures and an XML file that gives each picture ASCII symbols. A .directory file might be used.
Files involved in this specification are located according to the "desktop base directory specification" which can be found on www.freedesktop.org.
All the files of the theme must be placed in a sub directory of
$XDG_DATA_DIRS
/emoticons/
The name of the directory must be equal to the name of the theme.
That directory must contains a file called emoticons.xml
the format of that file is described below.
The theme directory may also contain a .directory file which contains translations of the theme name and/or an icon for that theme.
Emoticon map files must be well-formed XML files. Implementations should ignore unknown tag or unknown attributes.
- <messaging-emoticon-map> [version="0.1"]
The root element is <messaging-emoticon-map> all other elements are contained by it.
- <emoticon file="...">
This element represents one emoticon. The attribute file is the name of the image file which must be in the same directory. The extension may be omitted. In that case, the implementation look in that directory for a file with the same name in a supported format.
There are no order for emoticon in the map. But the first icon in the map is generally used to identify the theme graphically. By convention the this SHOULD be :-)
- <string>
This element may only appear below <emoticon>. It represents the ASCII string which will be matched in the text, and replaced by the image specified by the file attribute of the emoticon.
There may be several strings per emoticon.
There is no order for string inside an emoticon. But the first one SHOULD be the default one, and will be taken if there is a GUI selector.
<messaging-emoticon-map> <emoticon file="smile.png"> <string>:-)</string> <string>:)</string> <string>:o)</string> </emoticon> <emoticon file="wink.png"> <string>;-)</string> <string>;)</string> </emoticon> <emoticon file="unhappy.png"> <string>:-(</string> <string>:(</string> </emoticon> </messaging-emoticon-map>