# User Guide

An alphabetical index of all User Guide topics can be found in the User Guide Category. The below is the same information organized more like a book. When linking to this page, please link to the sub-pages themselves, not this table-of-contents page.

##  Roster

The roster is the window that lists your contacts. In some other Instant Messaging programs it's called a contact list, for obvious reasons.

This is the center of your experience with Psi, and it is from here that your session is controlled.

###  Status

Likewise, you can view your contacts' status and status messages - the icon next to their name changes according to their status for 'at-a-glance' information, and you can view any status message they may have set by hovering over their name.

###  Authorization

Authorization is required to be able to view a contact's status. What does this mean? Basically that if neither you nor the other contact has authorization, you cannot see each other. If only you have authorization, you can see their status and they can't see yours; if only they have authorization they can see your status and you can't see theirs. If you both have authorization, you can see each other.

How do you obtain authorization? When you add a contact, you will have the option both to add authorization to, and request authorization from the contact. When you are added to someone's roster your permission will be requested to grant them authorization.

Although authorization is needed to see a contact's status, it's quite possible to have many contacts in your roster without authorization, and to chat and message them quite normally.

###  Contacts

Your contacts are the names that appear in your roster, also known as the people with whom you communicate using Psi. As well as their names/nicks the roster also displays information pertaining to their status/online presence. You can add a contact to your roster, remove a contact, and you can also rename a contact if you wish (bob@jabber..... could be changed to Bob for example).

####  Self Contact

Psi has the possibility to show in the roster your own contact. This is particularly useful if you have more resources.

The self contact can't be renamed. It appears in the roster with the Nickname you have entered the VCard.

TODO: to be beautified, depending on the future structure of the Wiki

You can add contacts to your roster using the "Add a contact" dialog available in the Psi Menu (click on the Psi button).

If you want to add contacts over a transport, you need to follow these extra steps first

1. from the services dropdown list select your transport
2. Psi will initially try do use Service ID translation to "see" how Jabber IDs for that specific transport should look like
1. In case of success
1. you'll be asked to enter the ID (as the of your ) of the other user in the Service ID box
2. click "Get Jabber ID"
3. the Jabber ID will be automatically filled with the ID of the user over the transport
2. In case of failure
1. you'll have to figure out how the Jabber IDs are formed out for that transport (usually: username@transport_jabber_id // Example: myYahooID@yahoo.myserver.net)
3. enter this ID in the Jabber ID box

Steps for adding any kind of contact:

1. Make sure the Jabber ID box is not empty
2. Name your contact (fill the Nick field)
3. Select a group to put your new contact
4. You'll probably want to select "Request authorization when adding"

You're done!

###  Groups

Psi does not support yet in the interface having users in multiple groups, although it is technically possible in Jabber.

Psi will show correctly the users in multiple groups if these changes have been performed in some other client.

If you feel adventurous, start the XML console and send the following piece of XMPP (Jabber) code:

<iq type="set" id="some_id" >
<query xmlns="jabber:iq:roster">
<item name="Contact Name" jid="contact_jid@server.org" >
<group>Group 1</group>
<group>Group 2</group>
</item>
</query>
</iq>


Don't forget to modify:

• Contact Name to the name you want your contact to have when appearing in Roster
• contact_jid@server.org to your contact Jabber ID
• Group 1 and Group 2 to the name of the groups you want the contact to appear.

You will have now Contact Name in both Group 1 and Group 2. If you want more groups simply multiply the <group>...</group> line to add all your wanted groups. If you want less groups, send the code with a new set of groups. Every time you have to enter all the groups you want the contact to appear in.

You can also enter no group. The contact will appear in the "General" group in Psi.

####  Hidden Group

This is a normal group in the Jabber account which can be hidden by Psi (also available as a normal group in other Jabber clients).

It is special for Psi because it can be hidden. Why would you do this? It is a very convenient way of keeping bots hidden, even though they are online. Also, if you have multiple contacts in your roster of one single user, you could hide some of them with the 'Hidden' group and leave only the most accessible one visible. In case there is an emergency, the 'Hidden' group can be made visible and used as a normal group.

In order to make the 'Hidden' group visible/invisible, go to the 'View' menu and check/uncheck 'Show Hidden' menu item.

If you want to move a user to/from the 'Hidden' group just like you do with any other group.

###  Gateways (Transports)

Gateways, also known as Transports, are Jabber components used for interacting with proprietary networks (instant messenger networks, SMS etc.).

Typically, gateways are used as translators between different types of instant messengers. If you are using Jabber but a friend uses MSN you can use a MSN gateway that will allow you to send messages to, and chat with, your friend on MSN.

You can choose whether or not to display gateways on your roster by clicking the gateway icon at the top of the roster. By displaying the gateways, as with your contacts, you can view the status of a gateway - if a gateway is offline the contacts in your roster for whom that gateway applies will appear as offline also. For example, if the MSN gateway is offline, your MSN contacts will appear as offline as well.

####  Connecting to the proprietary network

1. Before you can use a gateway you must have an account with the selected IM. For example if you want to communicate with friends on MSN you must have created an account on the MSN website. The advantage of using Psi is that it can communicate with all of the major IM networks in one place.
2. If you are on a server that provides a gateway you just need go to the next step. If your server does not provide the gateway you need you have to search for a different server, that provides the gateway and allows users who are not using this server to register. Many servers block users from other servers and very often Google accounts are blocked especially. Look e.g under [1] for a server that has a coloured icon for your needed gateway.
3. You have to browse using Service Discovery to the server which hosts your Gateway. You may want to enter the address of a different server to get access to different gateways. If you use gateways only on your server, you just need to open Service Discovery and they will come up right away in the window, without modifying the address in the address bar.
4. You need to let the gateway know your username and password for the proprietary network. This is done through a process called registering with the gateway. Once you have registered with the gateway, the contacts from the proprietary network should be pushed to your roster, if the gateway is functioning right.

####  How does a gateway work

The gateway (transport) functions like this:

2. the server sends your presence info to anyone in your roster (contact list) (this includes Gateways, which are just normal contacts, only displayed differently)
3. once a gateway receives the presence information it logs into the proprietary network (only if you are registered with the transport)
4. the gateway sends to your server the presence information of all the gateway contacts

The easiest way to not make the transport log automatically, is to remove authorization (Right click on the transport > Authorization > Remove authorization from). This will save you from entering registering the transport over and over again. You'll have it registered, but "blind", since you've removed its authorization and it won't receive any presence information from you (=it won't see you).

####  Connecting to an IRC Network

1. Perform a Service Discovery.
2. Register with the IRC protocol.
3. Bring up the Multi User Chat dialogue.
4. Your hostname is that of the transport you have registered.
5. The room name is entered in one of the forms:
1. room%server.domain.tld (for ejabberd's irc gateway)
2. #room%server.domain.tld (for pyirct ad-hoc server connections)
3. #room%serveralias (for pyirct pre-registered server connections).
6. If you're using ejabberd's irc gateway, your nickname cannot be changed using the normal IRC /nick command once connected so choose it carefully if you have not registered the name previously.
7. If your nickname has been registered previously nickserv will contact you. Simply type "identify password" in a message to it in order to identify yourself.

Once connected you will receive server messages in new windows, these hosts will appear as temporary contacts in your roster. After a short period of time, dependant on the IRC server to which you are connecting, the requested room will open in a new window.

We have a special section on the FAQ Page about Gateways. Make sure you check it out.

#####  FAQ

TODO: some of the behaviour described in the FAQs could/should be imported/copied in this page

##  Chats

###  Formatting

Psi supports basic formatting for both chats and normal messages.

Formatting rules:

• *bold*
• /italic/
• _underline_

You need to enable emoticons if you want formatting to be enabled. If you don't want emoticons to be showed, clear the list of emoticon sets.

Psi has planned support for XHTML-IM, a Jabber Enhancement Proposal which describes the allowed HTML set to be used in XMPP (Jabber). The port to Qt4 (planned for Psi 0.11) should ease up the implementation. New features are to be added after 0.11.

###  Using Tabbed Chats

Each chat is placed inside a tab. In a window, you will find a group of chats called tabset (a set of tabs).

Mouse actions (LMB, MMB, RMB - left/middle/right mouse button):

• LMB double-click - detach tab
• MMB drag inside the same tabset - move tab inside the same tabset
• LMB drag outside the current tabset, into another tabset - move tab into another tabset (it turned out not to be working in Windows, although it was coded with no platform specific code)

Keyboard shortcuts:

• Ctrl+Page Up/Down = previous/next tab (like in Firefox, iChat)
• Ctrl+W = close tab (like in Firefox)
• not yet implemented: Psi 0.10 is also planned to support Ctrl+Tab/Ctrl+Shift+Tab for previous/next tab - like all Windows applications

##  Messages

###  Formatting

Psi supports basic formatting for both chats and normal messages.

Formatting rules:

• *bold*
• /italic/
• _underline_

You need to enable emoticons if you want formatting to be enabled. If you don't want emoticons to be showed, clear the list of emoticon sets.

Psi has planned support for XHTML-IM, a Jabber Enhancement Proposal which describes the allowed HTML set to be used in XMPP (Jabber). The port to Qt4 (planned for Psi 0.11) should ease up the implementation. New features are to be added after 0.11.

##  GroupChat

Multi User Chat(MUC) is the next generation of the GroupChat protocol. MUC is implemented starting from Psi 0.11. And Psi 0.10 is minimally compatible with MUC rooms (with several (many) limitations).

You can join a multi user chat by clicking the Psi menu, then selecting Join Groupchat. The Join Groupchat dialog appears (shown on the right).

If you have more than one Jabber account, you can select from the "Identity" list which one to use when you connect to the Groupchat.

Enter the name of the Jabber Conference server into the Host field. Note: Not every Jabber server runs the Conference service. If you type in a chat room that doesn't exist, it will be created. Type in a nickname that you want to be known as during this chat session. If you have previously been to this chat room, you can select it from the "Recent" list.

Shown on the left is a chat room called jdev - the Jabber developers room. You can can see the list of people on the right hand side, the chat area on the left, and text entry at the bottom.

If you want to change the topic, click the Topic button. To quit the multi user chat, simply close the window in the normal way.

### Inviting friends

You are able to invite your friends to join a multi user chat room that you are already in. Simply press the right mouse button on their name, point to Invite to, and click the room you want to invite them to. The example on the left shows me inviting Justin to the chat room jdev that I joined above.

### Receiving Invitations

The dialog shown on the right is what you see when someone sends you an invitation. It appears just like a regular message, but with a special attachment. Don't click the link in the message, double-click the attachment instead. It will then open the Join Groupchat dialog shown at the top of this page, with the details of the Groupchat room you have been invited to. Simply type in a nickname and click the Join button.

The method of receiving invitations will be improved in a future release.

### Commands

new in psi 0.13

Starting with Psi 0.13 you can also enter a command mode that allows invoking text based commands (similar to irc). To activate command mode, press the keyboard shortcut defined in "Shortcuts in the chat Dialog -> Change to quick command mode". To leave the command mode just press return without any text in the input box.

Supported commands:

clear
clear currently displayed history.
nick [newnick]
change nickname to newnick. If nickname is omitted, offers current nickname to edit.
sping
(status ping) Check joined status on current room.
version nick
Display client version of nick

##  Service Discovery

Service Discovery allows you to:

• add the ability to talk to friends who use other instant messengers
• find a friend who uses Jabber
• create or join a conference room where multiple people can chat together
• other things, as Jabber is an extensible protocol and anything can be added in the future

Generally speaking, the Service Discovery dialog will allow you to:

• browse different servers/components, displayed in a tree (the root of the tree is the address you have typed in the Address Bar)
• do specific actions on the nodes of the tree, depending on their type/capabilities

###  Browsing using Service Discovery

1. Click the "Psi" button or right click the account name in the roster window.
2. Select Service Discovery, the Service Discovery window opens.

The Address drop down list shows the Jabber server you are currently connected to. You can also enter the address of another Jabber server (to find a list of open Jabber servers look at jabber.org).

###  Server components

Server components are usually the first root child nodes listed when browsing a Jabber server.

Most known server components are:

Depending on their functionalities, you can perform several actions on them.

###  Actions

Actions can be found:

• in the toolbar
• in the context menu (right click) of each node displayed

They may appear disabled if a certain functionality is not advertised. It may happen for some components not to work correctly and not advertise correct functionalities. Contact the server administrator or use a similar component on another server.

####  Register/Unregister

Some components provide the possibility to register with them. Once registered, the components will appear in the roster just like any other contact, but in a special group called "Agents/Transports". You would be able to do with the component the same actions you do with a normal contact, such as chatting - some components even "react" to commands sent via chat messages.

Typical components providing this action: Gateway, Jabber User Directory

It's possible to unregister a service (Psi considers all JIDs without user names as services) if you have it in your roster, and you delete it using normal GUI actions. Then Psi silently tries to unregister your service in the background. It's also possible to manually unregister service, but you'll currently need to use XML Console. It actually consists of registering, but with no information in all fields (empty fields).

According to Peter Saint-Andre from jabber.org you can manually unregister/deregister from a gateway or transport service by entering the following statement into Psi's xml console:

<iq type='set' to='icq.jabber.org'>
<query xmlns='jabber:iq:register'>
<remove/>
</query>
</iq>


NB: Please note that icq.jabber.org is just an example. Make sure you replace it with the service you want to unregister from!

Just to make sure you can also remove the authorisation. To do so, enter this query (again, replace icq.jabber.org with the service or gateway that you are using:

<iq type='set' to='icq.jabber.org'>
<query xmlns='jabber:iq:roster'>
<item jid='icq.jabber.org' subscription='remove'/>
</query>
</iq>


####  Search

TODO: content: Find a Friend Who Uses Psi

Typical components providing this action: Jabber User Directory

####  Join

TODO: the option is available for MUC components

Typical components providing this action: Multi User Chat

<em>

##  Profiles

###  What is a profile?

A profile is a set of preferences that reflect the particular way you configure Psi for your personal use. By default Psi creates a profile for you during installation (Windows XP) or at first start-up (MacOS X) when you are asked to provide your Jabber Account User details. You can create more than one user profile.

###  How is a profile used?

The profile is stored on your computer's hard drive. It contains your Jabber ID (or multiple IDs) and determines which of these are enabled. It also remembers how the options have been configured, such as default actions, appearance (icon sets etc.), pre-set status messages, sounds etc.

###  Who should use/add new profiles?

Most Psi end-users will only need the one profile even if they have multiple Jabber IDs. However, profiles are useful when more than one person uses Psi on a single computer OR when you are using Psi in different contexts (work, social, testing).

Swapping between different profiles can be a lot easier than logging off your various Jabber IDs. When you start Psi all your Jabber IDs go "online". Sometimes you don't want all your contacts to see that you've come "online" when you are busy working.

###  Creating a profile

(imported from psi.affinix.com/psi_docs - also needs screenshots) When you first launch Psi, you will be presented with the Open Profile dialog (as shown in the image on the right). Click the Profiles button to begin.

A new window will appear, which is where you'll see your profile after it's created. Click the New button to create your first profile.

The Create Profile dialog will appear, as shown below. New Profile

Choose a simple name for your profile, such as your own name. Use only letters and numbers, no punctuation or special characters.

Jabber has two methods of sending messages to your contacts. Message is like ICQ, where they receive the single message, then click reply. Chat is like AOL, where the whole conversation continues in a single window that remains open. Select which one you prefer as your default. You are able to change this later if you change your mind.

If you'd prefer to see Smilie Face whenever someone sends you a :-), then check the box next to Enable Emoticons.

Click Create, and you will be returned to the Open Profile dialog. You will see that your newly created profile appears in the drop-down list. If this is the only profile you will use, tick the checkbox labeled Automatically open on startup. Click Open to select your profile for use.

##  Accounts

Psi is one of very few Jabber-only clients (if not the only one) with the possibility to connect to more than one account at the same time.

###  Resources

Unlike other Instant Messaging networks, the Jabber network allows you to connect more than once at a time, from different places. To do this, every time you sign in, you label it as a different "resource". A resource is just a name. You might call one resource "home", another one "work" and another - "laptop". You assign each of those resources a Priority Number. When logged in multiple times, messages sent to you always go to the resource with the highest priority by default.

For example: you leave Psi logged in at home with Priority 1, and when you're at work you sign in with Priority 2. As your Work resource has a higher priority, messages be routed to work when you're at work, otherwise to home. You sign off when you leave work, and messages then get routed back to your Home resource. If you're signed in at both Home and Work, and get called out to another location, you might like to take a laptop with you. In this case you might sign in as Laptop (Priority 3) for when you're off site temporarily.

###  Managing Accounts

In order to add/modify/remove accounts from the current profile, you need to open the Jabber Accounts dialog:

1. click the Psi button (or open the 'General' menu)
2. select 'Account Setup' from the menu

To delete an account, use the General > Account Setup menu, select the desired account, and click the Delete button. You will then be asked if you want to delete the account only locally or on the server, too. Please note that you cannot delete an account by right-clicking on its icon in the GUI and selecting Modify Account.

###  Proxy Configuration

A proxy server is a computer network service that allows clients to make indirect network connections to other network services. More iformation on proxies can be found here.

Psi can use Proxy servers to facilitate the connection to the Jabber Servers through firewalls or in some special network conditions.

####  Proxy settings

The typical settings for the Proxy configuration are:

• Host (mandatory)
• Port (mandatory)

If Authentication is used (the "Use authentication" checkbox is checked):

####  Proxy types

HTTP "Connect"
very simple proxy protocol
SOCKS v5
HTTP Polling
this is used according to the specifications (JEP-0025) - the "Polling URL" is a specific setting for this type of proxy

####  Setting up a proxy

You can set up a proxy to be used for a specific account.

You just need to know the proxy type and the proxy settings - these are usually provided by your network administrator. Once you know this, follow the following steps:

1. in the Jabber Accounts dialog, select the account for which you need to enable Proxy support
2. click 'Modify'
3. in the 'Account Properties' dialog, open the 'Connection' tab
4. if you have any proxy set up, you can select it from the dropdown list
5. to add a new Proxy, click 'Edit'
6. in the 'Proxy Profiles' dialog, click new
7. change the type of the proxy and its settings
8. click 'Save'

TODO: integrate: http://nscsysop.hypermart.net/proxypac.html

<em>

###  Account Properties

####  Ignore SSL warnings

SSL certificates are used to offer encrypted communication between the client and the server.

There are servers which use self-signed SSL certificates. If your Jabber server is one of those, you may get an error like this:

The [servername] certificate failed the authenticity test.
Reason: Certificate is self-signed.

Psi is warning you that the certificate is not trusted. You should be able to connect by pressing 'Continue', however this will not work when you are registering a new account.

This is not a problem with Psi. This is a problem with your server's certificate. If you don't want Psi to warn you about an untrusted certificate, then the server administrator needs to get the certificate signed by a Certificate Authority (like Verisign).

If you are aware of the security issues and want to "trust" a self-signed certificate, for one thing, be sure you do trust the administrator. We've seen some server admins who are doing this as a hobby not a business and they don't wish to shell out cash for a properly signed certificate. (Hint, SSL certs are cheap now.)

If you still wish to use a self-signed certificate but don't want to get the warning on each login, you simply need to check this option (Ignore SSL warnings) in 'Account Properties' dialog for the account you wish to log into.

If you enable this option, be aware that it is easy for an attacker to send you another self-signed certificate (which will then be trusted), without you noticing it. Better explicitly install the certificate as a trusted certificate in Psi, and leave this option unchecked.

##  File Transfer

###  Introduction

File transfer with Psi depends like everything in Psi on the XMPP/Jabber protocol standards. To accomplish a file transfer, the sender and the receiver have to establish a connection which allows them to transfer binary data streams between each other.

###  Binary Streaming Methods

In XMPP there are two different methods defined to manage a binary data stream: in-band and out-of-band. Both are described below.

####  In-Band

In this method the data is sent in pieces on the same XML connection used for chatting.

In this method all of the traffic flows inline over the Jabber server(s) to which the sender and the receiver are connected. This creates additional load on the Jabber server(s), making it potentially difficult for some high-traffic servers to support.
Furthermore, due to the inline nature of this method, the transfer speed is often much slower than through a direct (Out-Of-Band) connection.
One advantage is a bit of anonymity between the sender and the receiver as only the server knows their IP-addresses. Furthermore, this method requires no special configuration on the client side, making the ability to send a file automatic among established peers.:

Psi currently doesn't support data transfer over an In-Band data stream.

####  Out-Of-Band

In this method a separate connection is made for the binary data transfer. The clients themselves have to negotiate a working data stream/connection by sending each other their IP-addresses or the address of a proxy which is capable of connecting the partners together.

This method carries added complexity when firewalls are involved between the sender and receiver. This can be minimized by using a proxy server, which also adds a layer of anonymity as the sender and the receiver need not know know each others IP-addresses.
The transfer speed may be faster with this method. Throughput is generally limited only by the connection speed of the sender and receiver.

This is the only method Psi can currently use to execute a file transfer.

###  Configuration

Options, Application tab

A very important fact about file transfer with Psi is, that the client must be enabled to connect through a TCP port to an external computer. The default port for this is 8010 but it can be freely changed in the "Options" dialog available through the main menu of Psi. The option is called "Data Transfer Port" and resides on the "Application" tab.

Also on this tab is the option "Data Transfer External Address" which is to be used when Psi is not able to detect your external IP-address because you are connected to the internet through a router.

• If you have a static internet address you can fill it in this field.
• If your provider assigns a dynamic address to you everytime you connect to the internet, you should use a dynamic DNS name which contains your current IP-address. Two well known providers for free dynamic DNS are DynDNS.org and No-IP, a more scalable and also free offer is available at the german noxa.de Network (seems to be only accessible in german language at the moment).

For a file transfer to work, at least one of the partners has to be able to act as a server and is reachable through a direct connection on the defined Data Transfer Port. If you use a common home router, you could specify a static port mapping (often called "Virtual Server") to your computer or better use a triggered port mapping by defining the Data Transfer Port Psi uses (mostly 8010) as the trigger to bind exactly the same port to your local machine.

Account Properties, Misc tab

If everything above hasn't helped you, or is in anyway not possible on your network your last chance is to use a Data Transfer Proxy. You can tell Psi to use such a proxy by opening your "Account Setup" window through the main menu and modify your currently used profile. On the account modification dialog "Psi: Account Properties" go to the tab "Misc" and use the text-box labeled "Data Transfer Proxy" to set the proxy's address. "Data Transfer Proxy" expects a JID and not a FQDN. Enter "0" as Data Transfer Port in the options dialog to prevent Psi from attempting to establish direct connections. This speeds up the initialization of data transfers significantly in some cases.

The most popular proxies are "proxy.jabber.org" (hosted by the Jabber Foundation) and "proxy64.jabber.ccc.de" (hosted by the Chaos Computer Club from germany). Also you can look if your XMPP Server provides his own proxy, by doing a Service Discovery on your XMPP Server. If you see something like "SOCKS5 Bytestreams Service" you can enter the corresponding JID as "Data Transfer Proxy".

Now you should be able to send and receive files. If not, your network configuration probably prohibits Out-Of-Band file transfer through Psi, or you might have missed something above.

###  Sending files

A transfer can be started by:

• right-clicking on a contact in your roster and then choosing "Send File"
• simply by dragging a file from the shell over a contact in your roster and drop it there.

Send file dialog box

• choose the account from which you want to send the file by using the drop down menu labeled "Identity"
• define the JID, including the resource to whom you want to send the file by editing the "To" text-box (should be automatically filled)
• specify a path to the file you want to send by using the text-box labeled "File" or the button near to it if you didn't use the drag & drop way to open the "Send File" dialog.
• optional: you can give your partner a description of the file you want to send her/him by typing anything into the "Description" text-box.

As soon as everything is correctly filled in you can start the negotiation and transfer process by clicking on the "Send" button. The animations states that Psi is still working on it's task. After the choosen receiver accepted the file and has choosen a path for the incoming file to save and if everything is configured the right way, the Transfer Manager will open and display a progress bar indicating the state of the file transfer. If the Transfer Manager doesn't appear either your partner has declined the file transfer or no data stream connection could be established. If the last case is right, read about Configuration paragraph.

####  Transfer Manager

The Transfer Manager window lists every file transfer and indicates the progress of every one. It will save every previous transaction until the "Clear Finished" button is pressed or the entry is individualy deleted by right-clicking and using the "Clear" option. Also transfers which are not yet finished can be aborted by right-clicking and using "Cancel". The Transfer Manager can be opened manually through the same named entry in the main menu of Psi.

####  Technical Details

After a file transfer request is sent to a Jabber user and this user accepts the request, both partners are sending their IP-addresses, DNS-names or those of a proxy to the partner. Both will then try to establish a connection through any of these. If this works a Out-Of-Band binary data stream connection is established and will be used to transfer the file.

####  Encryption

Warning: You should be aware of the fact that neither the file itself nor the file name and the file description will be sent encrypted although you are using OpenPGP encryption for chatting. If you want an encrypted file transfer you have to encrypt the file manually before transfer. On Windows you can use the your OpenPGP keys and Windows Privacy Tools (WinPT) or any other file encryption tool to do this.

###  Foreign Networks

A file transfer to different instant-messaging network through a Gateways (Transports) is not impossible. But it resides in the responsibility of the Gateway you use to offer this ability. At the moment there seem to be very few Gateways which support such a feature. Psi is only a XMPP-client and so it will never be responsible for this to work.

###  The Future

In the future it may be possible to send files to contacts which are offline and also to receive file if the sender is already offline. The first approach was XEP-0129, which would have made it possible due to a WebDAV based storage service which the XMPP server has to offer to it's users. But XEP-0129 is now deferred.

Also it is possible that in a later version Psi will support In-Band binary stream connections which would help all people who cannot use file transfer because of firewall and routing limitations.

Google Talk have implemented File Transfer via Jingle - this makes it far more likely that a file transfer will succeed. There is a Google Summer of Code 2006 Project to implement Jingle File Transfer in Psi.