Licq FAQ

Answers to some of the most frequently asked questions about Licq.


  1. Basics
    1. Who wrote Licq?
    2. What does Licq stand for anyway?
    3. Is Licq based on micq code like many of the other clones?
  2. Compiling / Installing
    1. What is needed to compile Licq?
    2. How do I get Licq working through a SOCKS5 server?
    3. How do I do a manual install (ie I have a binary distribution)?
    4. I am trying to compile with Solaris and the compilation freezes at the …
    5. I am compiling under Solaris and I get an internal error.
    6. I am using an older compiler (ie gcc 2.7) and get errors about ANSI C++ …
    7. What is socklen_t?
  3. Using
    1. Where do I get a uin from?
    2. Does multi-party chat work?
    3. What is, and how do I use, the Licq fifo?
    4. What happened to the "beep" OnEvent option, or, how do I make the …
    5. Licq appears 5 times in my process list, what's going on?
    6. I get "(ERR) Unable to allocate TCP port for local server (Unknown host)" …
    7. What happened to the spoof uin option?
    8. I am using ip masq icq module and it doesn't forward connections to Licq.
    9. How do I configure ipmasq for ICQ?
    10. I can't connect to ICQ, all I get are timeouts.
    11. Does Licq support server side contact lists?
  4. Plugins
    1. I get something about being unable to load a plugin because "file not …
    2. Licq starts up but then exits with "licq: Fatal IO error: client killed".
    3. What does "undefined symbol: LP Main" mean?
    4. Qt-gui crashes on startup, it says something about …
    5. When Licq is docked it is still visible in the taskbar, what can i do?
  5. Qt-GUI plugin
    1. The GUI says it is unable to load (file).xpm or (file).gif, but the file …
    2. How do I change the colors of the Qt-Gui?
    3. Why are there no spaces between words in the History tab?
    4. How do I dock the Licq icon?
      1. WindowMaker
      2. AfterStep
      3. KDE
      4. Gnome
    5. How do I see other encodings (Russian, Japanese, etc.)?
  6. Protocol plugins
    1. What protocols are available?
    2. How do I start using a protocol plugin?
  7. Donations
    1. What are the operating expenses?
    2. What is the emergency fund?
    3. How do I know my donation is going to the project?
    4. I donated money, will you add the feature I want?


Basics

Who wrote Licq?

Licq was first begun as a text mode client to ICQ in February 1998 by Graham Roff and a programmer who wishes for some strange reason to remain anonymous. He's from Nova Scotia, perhaps that explains things. The Qt port was written by Graham Roff and starting in June 1998.

Since then the entire code was rewritten by Graham Roff, with the assistance of numerous internet volunteers. The protocol plugin rewrite of Licq was done by the current maintainer, Jon Keating. All current development is done by Jon Keating, Erik Johansson and many volunteers. Former developers include Thomas Reitelbach.

What does Licq stand for anyway?

Contrary to popular belief, it does not stand for Linux ICQ. This would be (a) a bit conceited, and (b) way too obvious a name for a linux program.

Is Licq based on micq code like many of the other clones?

Licq was begun a long time before micq was released and is based completely on original source code. It is also done in C++ as opposed to C like micq and most of the other clones.

Compiling / Installing

What is needed to compile Licq?

See the LicqRequirements web page for all the details.

How do I get Licq working through a SOCKS5 server?

I do not use socks, and didn't write the code to make Licq work with socks. After configuring with --enable-socks5 you have to set some environment variables as well, follow the guidelines that come with the socks5 client. Other than that, I can't help you. Try the README.SOCKS included with the Licq distribution.

How do I do a manual install (ie I have a binary distribution)?

<= 0.61
Easy, first copy the binary to somewhere nice (like /usr/local/bin). Then copy licq-base.tar.gz to /usr/local/share. There are some other interesting documents to look at if you want as well. Then run licq and it should finish the install for you. See, it's easy.
>= 0.70
Copy the binary somewhere nice like above. Then copy everything from the share/ directory to /usr/local/share/licq. To manually install a plugin simply copy it to /usr/local/lib/licq/plugins.

I am trying to compile with Solaris and the compilation freezes at the "moc" line.

Licq requires GNU make to compile properly. Alternatively, you can compile all the moc files by hand doing:

$> moc <infile> -o <outfile> 

The list of files to moc is in the Makefile. If you do this, you will still have to replace the $^ in the following section:

licq: $(OBJECTS) $(METAOBJ)
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS) 

to be:

licq: $(OBJECTS) $(METAOBJ)
	$(CXX) $(CXXFLAGS) -o $@ $(OBJECTS) $(METAOBJ) $(LDFLAGS) $(LDLIBS) 

I am compiling under Solaris and I get an internal error.

This is a problem with some versions of g++. Simply remove -O2 from the relevant Makefile and it should work fine.

I am using an older compiler (ie gcc 2.7) and get errors about ANSI C++ not allowing implicit casting of "void *".

Some older implementations of libstdc++ erroneously define NULL as being ((void *)0), which causes some C++ compilers to complain. If this is the case, you need to upgrade to a newer compiler.

What is socklen_t?

If you get compile errors refering to socklen_t simply edit config.h and add "#define socklen_t int" to it somewhere.

Using

Where do I get a uin from?

Licq can register a new user with Mirabilis. Just go to the "System Menu" and then select "Owner Dialog." There is a "Register" button that you can click to create a new ICQ account.

Does multi-party chat work?

Yes.

What is, and how do I use, the Licq fifo?

Please see README.FIFO.

What happened to the "beep" OnEvent option, or, how do I make the pc-speaker beep when receiving a message?

The beep command did not work properly and so was incorporated into a self-contained executable (build beep.c in the contrib directory using the instructions contained therein) which can be called instead of "play" (or whatever) in order to generate a beep. So to rephrase, instead of a beep option, you can build a "beep" executable, and enter "beep" as the OnEvent Command (the parameters are irrelevant for this command).

Licq appears 5 times in my process list, what's going on?

There is really only 1 copy of Licq running, using the resources of one of the listed processes. The reason you see multiple copies is that Linux shows threads as separate processes. As Licq may be running 5 threads or more at a time, multiple process entries will appear.

I get "(ERR) Unable to allocate TCP port for local server (Unknown host)" when I start Licq.

This will happen if you have not set up your hostname properly. This is a necessary step for running many network applications. Make sure your hostname (which can be found by typing "hostname") resolves to a valid ip. Typically this involves adding it to /etc/hosts and setting the ip to your static ip or to 127.0.0.1 if you don't have one.

What happened to the spoof uin option?

This is no longer supported by the ICQ protocol. Sorry.

I am using ip masq icq module and it doesn't forward connections to Licq.

The ip_masq_icq module uses the ip contained in the logon packet to determine whether or not to forward connections to your machine. This IP is determined typically by looking at the hostname of the local machine. If your hostname is not set correctly or cannot be resolved, then Licq will default to using 127.0.0.1, which will be ignored by the module. The solution is to ensure that your hostname (to find it, type "hostname" at the prompt) resolves to your correct sub-net IP. To find out, ping your hostname ("ping <hostname>") and see what the ip ends up being. This ip will probably be something in the 192.168.xx.xx or 10.xx.xx.xx range. If it resolves to 127.0.0.1 or 0, then there is a problem. To fix this, simply edit /etc/hosts and enter the correct ip and hostname there, for example:

127.0.0.1    localhost 
192.168.0.2  <hostname> ...

How do I configure ipmasq for ICQ?

Configuring ipmasq and ipchains for ICQ is fairly simple. The relevant man pages contain a good source of information as well. Here is a sample configuration using ipmasq:

# Enable port forwarding for ICQ Client
#
port=2000
while [ $port -lt 2020 ]
do
  /usr/sbin/ipmasqadm portfw -a -P tcp -L $xnet $port -R 192.168.1.2 $port
  port=$((port+1))
done
/usr/sbin/ipmasqadm portfw -a -P udp -L $xnet 4000 -R 192.168.1.2 4000

And here is an example using iptables which is used with the Linux Kernel 2.4.x:

iptables -t nat -A PREROUTING -p tcp --destination-port 2000:2020 -i ppp0 -j DNAT --to 192.168.1.2
iptables -t nat -A PREROUTING -p udp --destination-port 4000 -i ppp0 -j DNAT --to 192.168.1.2

This script will forward tcp ports 2000-2020 and udp port 4000 to your machine inside the firewall. Note $xnet is the ip address issued to you by your ISP and 192.168.1.2 should be changed to the ip address of the machine that you are running Licq on. Also note that this is just one sample configuration and there are other ways to do this, using ipchains for example.

I can't connect to ICQ, all I get are timeouts.

This is a problem with the ICQ servers and people who use icq2000. For some reason a selection of the icq servers do not allow you to log on using another client after using icq2000. The solution? Edit ~/.licq/licq.conf and set the servers to be a valid icq.mirabilis.com ip except 205.188.153.*, eg 205.188.179.33. Try "nslookup icq.mirabilis.com" for more. This, hopefully, will make it work. In any case, it's not a Licq problem, but a mirabilis stupidity.

Does Licq support server side contact lists?

Yes, it is enabled by default. Licq supports having a user in multiple groups but the server only allows one group per user. This is a little difficult to manage, so there is a seperate menu item to change the server group of a user. Just right click a user in the Qt-GUI and take a look for yourself.

Plugins

I get something about being unable to load a plugin because "file not found" or "no such file or directory".

If this happens with QT-GUI then you most likely configured --with-kde support. In this case, please type "licq -p kde-gui" to start licq and read the README.KDE file. In all other cases the plugin may be unable to find a necessary library. Use "ldd" on the offending plugin to see which library it can't find. Then add the directory containing that missing library to your /etc/ld.so.conf file or LD_LIBRARY_PATH environment variable (see next question).

Licq starts up but then exits with "licq: Fatal IO error: client killed".

Because Licq is multi-threaded, it requires thread-safe X11 libraries. These can be aquired by recompiling your X server with the thread option or by grabbing the binaries.

What does "undefined symbol: LP Main" mean?

This is a bug with the dynamic loader used in SMP machines. Try changing DLOPEN_POLICY in config.h to RTLD_NOW and rebuild. Or upgrade your kernel/ld.

Qt-gui crashes on startup, it says something about "XRegisterIMInstantiateCallback.

There is a bug in QT 3.x whith X Input Methods (XIM). Try to start licq like this:

licq -- -noxim

When Licq is docked it is still visible in the taskbar, what can i do?

When you are using KDE you can prevent Licq from beeing visible in the taskbar. Simply prepend "kstart --skiptaskbar" to your commandline:

kstart --skiptaskbar licq

Qt-GUI plugin

The GUI says it is unable to load (file).xpm or (file).gif, but the file is there!

Qt has problems loading certain formats of xpm. The solution is simply to save the pixmap in question as a gif and edit the skin file appropriately. If the file in question is a gif, then make sure that you compiled qt with gif support enabled (configure -gif).

How do I change the colors of the Qt-Gui?

Colors are now integrated into the skin file. To change colors you must edit the skin file (found in /usr/local/share/licq/qt-gui/skin.<name>) and add the following:

# --- colors ---
colors.online = #ff0000
colors.away = dark green
colors.offline = firebrick
colors.newuser = yellow
colors.background = default
colors.gridlines = black

Of course you get to select your own colors! For the message window colors, take a look in the options for these settings.

Why are there no spaces between words in the History tab?

This seems to be a bug in the Qt widget being used. The solution is simply to use a TrueType font. Select one from the Options Dialog in the Font section.

How do I dock the Licq icon?

Docking the licq qt-gui status icon is fairly simple to do. Here is a list of window managers and what to do. If your window manager supports the freedesktop.org standard, just enable the "Small Icon" in the Options. If you are using KDE, use the KDE-GUI.

./configure --with-kde

If you aren't using a freedesktop.org compliant window manager, do the following:

1. Start Licq and enable the dock icon in the Options screen.
2. Select "Save Settings" from the system menu.
3. Restart Licq (very important).

WindowMaker

4. Drag the status icon to the dock and voila.
Note that the other icon that appears is from windowmaker and can be set to something nice, or disable entirely using the windowmaker menu.

AfterStep

4. Add the following to your ~/GNUstep/Library/AfterStep/wharf file:

"*Wharf licq - Swallow "LicqWharf" echo &"

5. Next time start Licq, the icon should appear in the wharf.

4*.Another possibility is to add:

*FvwmButtons(Swallow (UseOld,NoKill,NoClose) "LicqWharf" Nop, Action (Mouse 1) 'Exec /usr/bin/licq')

to your FvwmButtons config file.

KDE

4. Configure the qt-gui plugin with --with-kde and then licq will dock in Kicker.
5. Start Licq and there it goes!

Gnome

4. Pick a smaller dock icon then the default (either 64x48 or one of the themed icons).
5. Select "Swallow App" from the gnome panel menu.
6. Set "Title = LicqWharf", "Width = 64", "Height = 48".

How do I see other encodings (Russian, Japanese, etc.)?

In the options, you can select a default encoding. Also, there are per-user encodings. In the event window, there is an encoding button in the top right corner. If the proper encoding isn't listed there, select the "Show all encodings" in the options dialog. You may have to experiment to find the correct encoding (there are 3 Japanese ones), but it does work properly. So please try all the appropriate encodings before saying that it doesn't work.

Also, you can set the language by the environment variable LANG or LC_ALL. For example:

bash$ LANG=ja_JP.eucJP licq -p kde-gui

will start Licq using the KDE-GUI in Japanese.

Protocol plugins

What protocols are available?

Currently ICQ, AIM and MSN are available. Only one account per protocol can be used with the 1.3.x releases. This limitation will be removed in a future release. ICQ and AIM are viewed as one protocol from Licq, so this means only one AIM or ICQ account can be used. Fortunately, this isn't too bad of a problem since ICQ and AIM work together. This means you can add AIM users to your ICQ list and vice versa. As for MSN, it is still being developed and supports basic functionality, but will be a full featured client soon!

Other protocols such as Yahoo and Jabber will come later.. unless someone else starts to work on it, then sooner.

How do I start using a protocol plugin?

First you need to install the protocol plugin. If you installed Licq from source, it can be found in the 'plugins' directory. After it is installed, you need to load the plugin. From the Qt-GUI this is done from the Plugin Manager dialog. After it is loaded, open up the Owner Manager and add your account for the new protocol.

Donations

What are the operating expenses?

The mail server and DNS server are currently run by Dennis Tenn and he pays all costs privately. A percentage of the donations will go to pay for the cost of running this server. Also, the domain names must be paid for every few years.

What is the emergency fund?

It is a percentage of donations that are kept in case a main developer has a personal emergency that requires monetary assistance. The usage for this money will be for necessary items such as food, rent, medicine, and other similiar items. It will not be used for unnecessary items such as alcohol, hardware, or anything that is a personal interest.

How do I know my donation is going to the project?

Since you are using Licq, you trust us not to put a backdoor in the program. With this reasoning, you should trust us that your valued contribution will be used solely to directly help Licq.

I donated money, will you add the feature I want?

Just because you donated money does not entitle you to automatically have a feature you want to be added. It will be considered as all other feature requests are considered. Your donations are appreciated, but they are viewed as contributions you make to help continue the Licq project.