1. PROJECT RELATED QUESTIONS 1.1 What is KVIrc ? What the "KVIrc" name stands for ? 1.2 Why KVIrc is not totally integrated in KDE ? 2. COMPILATION 2.1 I can't compile kvirc from cvs, what's wrong? 2.2 Internal Compiler Errors ? 2.3 On Mandrake 10.0 (or other) KVIrc fails to start saying that it can't find libkvisetup.so. 2.4 I got 'amarokInterface.cpp:29:31: amarokInterface.moc: No such file or directory'. Whats going wrong? 2.5 Configure complains about a missing libdl.so but I seem to have it 3. INSTALLATION 3.1 There is a problem during package installation/creation file /usr/share/services/irc.protocol from install kvirc-version.package conflicts with file from package xxx 4. IRC 4.1 How do i join a channel ? 4.2 How do i autojoin channels ? 4.3 How do I enable automatic NickServ identification ? 4.4 I can't see my national characters, what's wrong ? 4.5 I can't connect to an IPV6 server, what's wrong ? 4.6 /me doesn't support the '$' character, what's wrong ? 4.7 /me doesn't support the '"' (double quote) character, what's wrong ? 4.8 /me can't contain the ';' character, what's wrong ? 4.9 I try to do a /whois on nick blah\ but i get the reply for blah (without the slash) 4.10 What is AVATAR protocol ? Is there any documentation about it ? 4.11 The log files seem to be saved randomly, when I open a log I can see only a part of the text that actually should be there 4.12 The DCC transfers seem to be interrupted after the first few bytes: KVIrc says that the remote end has closed the connection. 5. ADVANCED IRC FEATURES 5.1 How do I connect to an SSL-enabled IRC server ? 5.2 How do I use DCC over SSL ? 5.3 Do I need a SSL certificate ? 5.4 How do I create a SSL certificate ? 5.5 I can't get KVIrc to use my SSL certificate in a DCC, what's wrong ? 5.6 KVIrc crashes when a certificate is used under Windows, what's wrong ? 5.7 How do I enable mircryption (encryption in general) for a specific channel ? 5.8 How do I execute a process and send its output to a channel ? 5.9 How do I keep channels and queries open after a disconnect ? 5.10 I have an unreliable ISP connection but KVIrc takes a really long time to detect a disconnection and reconnect. 5.11 I'm in a LAN and KVIrc uses a wrong IP address in dcc transfers 6. APPAREANCE 6.1 On Windows KVIrc seems to slow-down sometimes, what's wrong ? 6.2 I don't see the channel popup menus anymore, what's wrong ? 6.3 Does KVIrc support Themes? 6.4 I hate all that colors, what can I do about it ? 6.5 On Windows, how do I use firefox/opera/any_other_browser to open links instead of explorer ? 7. CRASHES 7.1 KVIrc crashes when the multiline text input is opened (obsolete) 7.2 What the heck is a gdb stack trace and how do I get it ? 7.3 KVIrc hangs up, but doesn't crash. How do i report debug informations ? 7.4 KVIrc exits by itself or simply "disappears" without any apparent reason. 7.5 KVIrc dies randomly and "Alarm Clock" is printed in the console 7.6 KVIrc dies when using alias(identify){ identify password; } -------------------------------------------------------------------------------- 1. PROJECT RELATED QUESTIONS -------------------------------------------------------------------------------- 1.1 What is KVIrc ? KVIrc is a cross-platform Internet Relay Chat client. The name stands for K Visual Internet Relay Chat client. The K prefix comes from the old times, when KVIrc was bound to the KDE project and depended on the KDE libraries to run. Actually this is not true anymore since KVIrc depends only on the Qt library from TrollTech and runs also on platforms where KDE can't run. 1.2 Why KVIrc is not totally integrated in KDE ? First of all read the answer for question 1.1. We could provide a more complete integration by the means of conditional compilation but since it would require additional efforts to synchronize the KVIrc sources with the KDE library changes we choose not to do it. If you wish to contribute some code that better integrates KVIrc with KDE you're welcome to do so: we will happily accept your patches as long as you promise to mantain them :) -------------------------------------------------------------------------------- 2. COMPILATION -------------------------------------------------------------------------------- 2.1 I can't compile kvirc from svn, what's wrong? Have you checked the requirements ? *Carefully* read the INSTALL file that comes with the distribution: it contains the informations to solve 95% of the problems that you may encounter. You may also try digging in our mailing list archive: many problems have been solved there. If you still can't get it to work please either subscribe to the KVIrc mailing list (see www.kvirc.net) and report the problem there or join #kvirc on IRCNet and ask the channel members for a hint. 2.2 Internal Compiler Errors ? Compile errors like this: In file [somefile]:[someline] internal error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See for instructions. This error can have multiple reasons. 1) A compiler bug: my GCC 3.2 20020903 (default on RH 8.0) spits out 5-6 of them daily. Usually it is solved by simply restarting the "make" command. If it doesn't go away or if it gets really frequent and annoying you might try to upgrade the compiler. 2) A memory corruption: this is really frequent: one of your memory banks is spitting random bytes sometimes. Usually the problems come out under heavy system load (kernel, KDE or kvirc compilation for example). You can check for memory corruption by trying different RAM modules (or removing them one at a time to discover the broken bank). You can also try a program called memtest and a kernel patch that can force the broken memory banks to be ignored by the kernel (allocated permanently to a dummy kernel task). These tools can be found by digging the web with your favorite search engine. 3) A deeper hardware problem: if upgrading the compiler and changing memory banks doesn't help then it *might* be a deeper hardware problem: bus errors , faulty IDE (or SCSI) controller or even buggy CPU... Well.... 2.3 On Mandrake 10.0 (or other) KVIrc fails to start saying that it can't find libkvisetup.so. Mandrake 10.0 default libtool package is broken. Either upgrade the libtool package or try to run ./autogen.sh --bundled-libtool and then recompile (./configure, make, make install). This *might* apply to other systems too. 2.4 I got 'amarokInterface.cpp:29:31: amarokInterface.moc: No such file or directory'. Whats going wrong? You have to install qt3 devel tools which include uic and moc. If installed, be sure that uic and moc are in PATH. 2.5 Configure complains about a missing libdl.so but I seem to have it The most common causes are two: 1) You have libdl.so.X (where X is usually a number or a set of numbers) but not libdl.so You need to do a symbolic link from libdl.so.X to libdl.so. You do it by entering the directory where libdl.so.X is and issuing a ln -s command, for example: # cd /lib # ls libdl* # ln -s libdl.so.2 libdl.so Then try to ./configure again 2) You don't have a c++ compiler installed The libdl test is the first ./configure test made with a c++ compiler. The confirmation for this error can be found in the config.log file where you can find lines similar to the following: configure:21637: g++ -o conftest conftest.cc -rdynamic -ldl >&5 ./configure: line 1: g++: command not found configure:21643: $? = 127 configure: failed program was: ... Your distribution probably ships the c++ frontend to gcc in a package separated from gcc itself. The package might be also named g++. Look it up on your installation CD and install it, then ./configure again. ------------------------------------------------------------------------------- 3. INSTALLATION ------------------------------------------------------------------------------- 3.1 There is a problem during package installation/creation file /usr/share/services/irc.protocol from install kvirc-version.package conflicts with file from package xxx This is a known issue with all types of packages that handle file conflicts. KVIrc installs the irc protocol handler for KDE and the same is done by ksirc and kopete (and maybe others). There is no particular reason for KVIrc to fix it in the core distribution (and there is also no simple way to do it). Either the package maker must exclude the irc.protocol file from installation or mark it as "optional" in some way or the users must use some sort of "force" flag during the installation. ------------------------------------------------------------------------------- 4. IRC ------------------------------------------------------------------------------- 4.1 How do i join a channel ? Type "/join #channelname" 4.2 How do i autojoin channels? There are many ways to do it. For example: Select "Scripting/Events" from the KVIrc menu. Lookup the "OnIrc" entry in the left pane of the window that pops up. Right-click on that entry and select "Add handler". A "default" handler will be created. In the right pane write: join #kvirc join #kde-users join #somechannel .... Now click OK and you're done: you have just created a handler for an event. Reconnect to a server and KVIrc will autojoin the channels that you have selected. Another option (nicer, if you use several servers) is to go to the servers options page and click the button labeled 'Advanced' on the entry for the single server. There is a server-specific "On connect execute..." event. 4.3 How do I enable automatic NickServ identification ? KVIrc supports two kind of NickServ identification rules: per-network and global. The per-network rules can be accessed from the server options page. You need to select a network in the list view (not a server!) and then click "Advanced...". In the dialog that appears there is a NickServ tab on that you can add your identification rules. Adding a rule should be straightforward (if you stop the mouse over an item you will likely get a small tool tip with the explaination). Each rule is composed of: - the nickname that is being identified: the rule will be applied only when your current nickname corresponds to this one. - a nick server user mask that must be matched by the NickServ user in order for him to be recognized as the real NickServ asking for identification. You will probably use something like NickServ!service@* - a message regular expression that must be matched by the message that the NickServ sends when requesting the identification. You will probably use something like "If this is your nick, identify yourself with /ns IDENTIFY password" - an identification command that will be executed when all the rules above match. You will probably use something like "ns IDENTIFY yourpassword" The global rules can be created in the IRC::NickServ page of the options dialog (accessible from the Settings/Configure KVIrc... menu). The main difference is that each rule has a server mask that must be matched by the current server name for the rule to be applied. KVIrc first looks in the per-network rules and if none matches it looks in the global rules. 4.4 I can't see my national characters, what's wrong ? There are several ways to fix your national characters display. General encoding: Open the options dialog and go to the "Encoding" page. You can set explicitly the encoding to be used for the whole application. If you choose "Use Language Encoding" KVIrc will try to guess the encoding from your system settings. If this doesn't work then the reasons may be: - Your system settings are wrong You need to fix them - Your server applies some specific encoding to the data See "Server encoding" - You're chatting with people that have different system settings See "Channel & Query encoding" Server encoding Besides the general encoding you can set one encoding per server. This is done in the server options dialog (Click Advanced...). The encoding will be applied to all the text that comes from and goes to the server. If you choose "Use system encoding" then the server will inherit the "General encoding" value above. If this doesn't work then you have either set it incorrectly or you are chatting with people that use different encodings. In this case see "Channel & Query encoding" The server encoding is used also to decode nicknames and channel names on servers that support it. Channel & Query encoding Besides the general and server encoding you can set also per-window encoding in channels and queries. This encoding will be applied ONLY to the text sent to or received from that channel or query. This feature is useful when chatting over a non unicode aware IRC server (nearly all at the time of writing) with people that have settings different than your general defaults or the server default. Keep in mind that IRC has a MAJOR problem with character encoding and in fact the formal definition of the protocol requires it to be only 7bit safe. This means that on some servers you may see your national characters eaten by the IRC network and there is almost nothing you can do about that... UTF-8 is the best encoding we can get on IRC. Try to convince other people to use it :) 4.5 I can't connect to an IPV6 server, what's wrong ? First of all make sure that your IPV6 stack is setup correctly. Can you ping6 other IPV6 other machines ? # ping6 www.6bone.net Is the IPV6 support enabled in your kvirc executable ? To find it out , try /echo $features in the KVIrc commandline. You should get a comma separated list of features compiled in the executable. If the list contains "IPv6" then the support is compiled in, otherwise you must check your compilation stage to guess what went wrong. To connect to an IPV6 server you can use /server -i If you can ping other IPV6 machines, the IPv6 support is compiled in your executable and you still can't connect to an *existing* IPv6 server then you may have found a bug :) Report it. 4.6 /me doesn't support the '$' character, what's wrong ? This is NOT a bug : this is a feature : kvirc supports (and substitutes!) variables in all the commands. You can escape your $ sign by using the backslash character: /me has gained \$100 will work correctly 4.7 /me doesn't support the '"' (double quote) character, what's wrong ? This is NOT a bug : this is a feature : a string enclosed in double quotes will have its whitespace preserved while the other strings will have the whitespace simplified. This is valid for ANY command. You can escape your " sign by using the backslash character: /me feels a bit \"foo\" will work correctly 4.8 /me can't contain the ';' character, what's wrong ? This is NOT a bug : this is a feature : kvirc supports multiple commands on a single line and uses ';' as a command separator. You can escape your ';' sign by using the backslash character: /me is hungry \;) will work correctly. 4.9 I try to do a /whois on nick blah\ but i get the reply for blah (without the slash) In KVIrc /whois is a scripting command and the nickname is a command parameter. In scripting commands the backslash is a special character with several "escape" meanings. To include a literal backslash inside a parameter you MUST double it, thus the correct command to issue is /whois blah\\ 4.10 What is AVATAR protocol? Is there any documentation about it ? AVATAR is a simple CTCP based protocol that allows associating images (avatars) to IRC users. The protocol definition is simple: - CTCP AVATAR QUERY: : PRIVMSG :<0x01>AVATAR<0x01> Queries the avatar of the . - CTCP AVATAR REPLY: : NOTICE :<0x01>AVATAR <0x01> Asserts that the user's avatar is located at that usually will be something like http://server.domain.top/avatarimage.jpg. KVIrc supports also DCC based avatars that are simply "offered" to the remote users. In this case the does not contain the http:// prefix but is a simple file name. The remote users request the avatars by issuing a DCC GET command. This is an useful but secondary extension and can be ignored by simple implementations. If you need more informations about this method please write to pragma at kvirc dot net. 4.11 The log files seem to be saved randomly, when I open a log I can see only a part of the text that actually should be there KVIrc does not explicitly flush the log files while writing them. The OS (or the underlying C library) does the flush operation when necessary. This means that blocks of the log file will be added to the file on disk only once in a while. If you really need to see the logs in real time then you can explicitly flush the log files by scripting. Just add a script like this to your OnKVIrcStartup event: timer(flushlogfiles,30000) { foreach(%x,$window.list(all,any)) { if($log.file(%x)) { echo -w=%x "Flushing log file..."; log.flush -w=%x; } } } The script above will flush all the log files every 30 seconds. You may remove the echo statement if you're annoyed by the output :) 4.12 The DCC transfers seem to be interrupted after the first few bytes: KVIrc says that the remote end has closed the connection. Make sure that you don't have activated the "Send ACK for byte 0" option in "Options->DCC->File Transfer->Advanced". This option should be used ONLY IF you have problems without. ------------------------------------------------------------------------------- 5. ADVANCED IRC FEATURES ------------------------------------------------------------------------------- 5.1 How do I connect to an SSL-enabled IRC server ? Use /server -s It should work also over IPV6. If it doesn't work then your executable might have no SSL support compiled in. To find it out type /echo $features in the KVIrc commandline. If "SSL" is not in the list then you must go back to the compilation phase and see what went wrong. 5.1 How do I use DCC over SSL ? /dcc.chat -s should work 5.3 Do I need a SSL certificate ? No you shouldn't need it, but you can use it if you want. 5.4 How do I create a SSL certificate ? A test self-signed certificate can be created by using the CA.pl perl script included in the OpenSSL distribution. It will be something like CA.pl -newcert 5.5 I can't get KVIrc to use my SSL certificate in a DCC, what's wrong ? The SSL protocol doesn't require the "client" to send the certificate: it is sent only if the "server side" requests it (it is not the KVIrc case). The server side may have a certificate and you can set it in the SSL options page. If your Private Key is stored in the certificate file pass the same filename to both Certificate and PrivateKey option. Remember to set the password if needed. 5.6 KVIrc crashes when a certificate is used under Windows, what's wrong ? This is probably a bug of the SSL dll shipped with the windows version of KVIrc. You might try with a different version of this dll. 5.7 Can I encrypt my messages? (or: How do I enable mircryption (encryption in general) for a specific channel?) KVIrc supports encryption for channels, queries and dcc chats by the means of text transformation engines. You can access the list of the engines by clicking the button with the yellow lock in the upper right corner of the window. In the pane that will appear select "use text transformation" and then choose one of the available engines. The Mircryption engine is an implementation of the mircryption protocol and supports both ECB and CBC mode. There is also a wide variety of Rijndael based encryption engies as well as some funky other text transform tricks. Most of the engines will need a pair of keys to encrypt and decrypt text and in most cases you will use the same key for both encrypting and decrypting. In the particular case of Mircryption you can enable CBC mode by prefixing your key(s) with the "cbc:" string. Once you have entered the keys just click on OK and start "talking" in the window. Any encrypted text will have a "lock" overlay in his icon. If you want to avoid encrypting a particular text line (maybe because you want to allow everyone on a channel to read it) you can start the line with a CTRL+P character. 5.8 How do I execute a process and send its output to a channel ? The straight way to do this is /exec("your command here"){ say $1; } Since it is not too much "user friendly", you can alias it in the following way: alias(runandsay) { exec($0-){ say $1; } } Then you would simply run /runandsay cat /proc/cpuinfo in the channel window you want the output sent to. Keep in mind that this is a "brute" approach and I'm sure that after reading some documentation (start from /help exec) you will be able to find more elaborate and nice ways to send a process output to a channel/query. 5.9 How do I keep channels and queries open after a disconnect ? KVIrc can keep your channels and queries open when the connection terminates unexpectedly. This will probably make sense only if you plan to reconnect to the same server or at least the same network (either manually or automatically). An "unexpected disconnect" is a connection termination not explicitly caused by the KVIrc user. This means that the connection is interrupted, either by the networking stack or by the remote server, without the user having sent a QUIT message (by the means of the /quit command or by pressing the "disconnect" button in the toolbar). All this because the normal behaviour of a /QUIT command is, yes, to quit your current connection without leaving traces of it. To keep the channels and queries open you just need to select the relative options in the "Connection" page of the options dialog (on unexpected disconnect: "Keep channels open" an/or "Keep queries open"). Then you might also select "Automatically reconnect", "Rejoin channels after reconnect" and "Reopen queries after reconnect" to bring your "dead windows" to life again :) Finally, you can simulate an "unexpected disconnection" by using the -u switch of the /quit command. This might be useful when you want to explicitly quit your connection while leaving the channels and queries open... maybe because you need to renew the connection to your ISP before reconnecting ;) 5.10 I have an unreliable ISP connection but KVIrc takes a really long time to detect a disconnection and reconnect. KVIrc doesn't detect itself that the connection has dropped until your kernel explicitly times out. KVIrc measures lag, instead, that will probably grow up a lot when the connection has dropped. You can write a handler for the OnLagCheck event that will detect the lag growing over a certain threshold and reconnect. This involves opening the event editor, selecting OnLagCheck and choosing "Add handler" from the right mouse menu. In the handler write: if($1 > 30000){ quit -f -u; } 30000 is just a sample threshold (it means 30000 milliseconds!), replace it with a value of your choice. quit -f -u will close the current connection immediately (-f = force) and will simulate an "unexpected disconnection" condition (-u = unexpected). If you then enable automatic reconnection (see answer for question 5.9) in the options dialog, KVIrc will automatically reconnect and rejoin channels. 5.11 I'm in a LAN and KVIrc uses a wrong IP address in dcc transfers KVIrc supports a couple of methods for guessing the right IP address for DCC transfers: you only have to guide it a bit :) The first thing to try is "Guess address from IRC when unroutable" (Options->DCC). This will perform a lookup on your own IRC mask once you connect to an IRC server and use the address as source in DCC transfers. (You need to reconnect to the server to make this option work!) This trick will fail when your hostmask is cloaked (mode +x on recent IRC servers): KVIrc will tell you that it couldn't look up the hostname and give up. In this case you might try to set a fixed address to be sent as source in the DCC transfers: you just need to fill in the *IP address* of your router in the option field. This field doesn't support hostname lookups and it won't update automatically when you router's IP changes. However, if you router's IP has a dns entry, you can ask KVIrc to fill this field with a simple script to be performed at every connection. event(OnIRCConnectionEstabilished,updatedccsource) { ahost(yourrouterhostname.dyndns.org) { option boolDCCSendFakeAddressByDefault 1 if($1)option stringDefaultDCCFakeAddress $2 else echo "Couldn't look up the router's hostname" } } When transferring files to other KVIrc clients you may also try the DCC RSEND protocol instead of DCC SEND. It will ask the remote end to listen instead. ------------------------------------------------------------------------------- 6. APPAREANCE ------------------------------------------------------------------------------- 6.1 On Windows KVIrc seems to slow-down sometimes, what's wrong ? This is usually caused by the heavy graphics: try removing some graphic effects like the pseudo-transparency. I have experimented that it happens almost always on 32-bit displays. Switching to 16 or 24 bits may also help. 6.2 I don't see the channel popup menus anymore, what's wrong ? If something went wrong with KVIrc settings (a crash when the script settings were saved ?) or if you have messed with the scripting options and you want to get back the original behaviour (default script) you can choose "Scripting/Restore default script" from the KVIrc menu. (WARNING: It will erase any script modification you have made!) Update: starting with the cvs of 2005.01.17, KVIrc should be able to detect such situations and automatically suggest the re-installation of the default script. 6.3 Does KVIrc support Themes? Yes, KVIrc now has introduced a Theme Manager. You can find it in the Option dialog. From there you can change the way KVIrc looks: fonts, colors, windows behaviour, icons, taskbars, and so on. Once you have changed the theme, you can save it, archive it (tar.bz2 or zip) and share with your friends, or send it to the KVIrc staff to see it published on the web site. 6.4 I hate all that colors, what can I do about it ? By fiddling with the options you can make KVIrc appear even monochromatic. Go to Options/Theme and select the minimalist theme: it will set white text on black background and will disable the displaying of a lot of icons. This is a good starting point for you console addicted hackerz :D 6.5 On Windows, how do I use firefox/opera/any_other_browser to open links instead of explorer ? Go to the "URL Handlers" options page and set run "C:\\path\\to\\your\\browser.exe" "$0" as url handler for the protocol you're interested in (maybe in all). Suepahfly suggests to use rundll32 url.dll,FileProtocolHandler "$0" as url handler to open the url in the default windows browser. ------------------------------------------------------------------------------- 7. CRASH ------------------------------------------------------------------------------- 7.1 KVIrc crashes when the multiline text input is opened (obsolete) If you have installed a new version of KVIrc over a previous installation br if you have changed the Qt libraries that KVIrc is linked to then it might be caused by a broken multiline text editor config. Try removing $HOME/.kvircssexeditorrc and starting KVIrc again. Update: this problem has been completely removed during late 2004 developments by completely rewriting the multiline input. 7.2 What the heck is a gdb stack trace and how do I get it ? A gdb stack trace is a "photography" of the state of the KVIrc internals taken when a certain event has occured. The most common event is a program crash (Segmentation Fault). The stack trace helps (or even allows) the developers to locate the crash cause in the program sources. To obtain a gdb stack trace you must: - Compile KVIrc with the --enable-debug ./configure option. Without this switch the stack trace is USELESS. - Have a working installation of gdb (the gnu debugger) This is usually available on your distribution cd and you may already have it installed. - Run KVirc: # gdb kvirc When the gdb prompt appears write: # (gdb) run -f Make KVIrc crash: gdb will tell something about a signal received by the program. Write then: # (gdb) bt The text you see is the stack trace you wanted :) Copy+Paste+Send it to pragma at kvirc dot net or the mailing list. 7.3 KVIrc hangs up, but doesn't crash. How do i report debug informations ? Use gdb to get a stack trace as in answer to question 7.2. Since your KVIrc doesn't crash you will have to interrupt the execution manually while it is hung up. You can do it by pressing CTRL+C in gdb. 7.4 KVIrc exits by itself or simply "disappears" without any apparent reason. Yes. It probably crashed but you haven't noticed that. We NEED a gdb stack trace or a working procedure to reproduce the behaviour in order to hunt it. 7.5 KVIrc dies randomly and "Alarm Clock" is printed in the console Try recompiling kvirc by adding the --with-ignore-sigalarm switch to ./configure. (Note: the reason of the incoming SIGALARM signals on certain systems is acually unknown. Please send hints to pragma at kvirc dot net). 7.6 KVIrc dies when using alias(identify){ identify password; }; This is infinite recursion: a programming error. Take a look at http://en.wikipedia.org/wiki/Infinite_loop , learn that once for all and fix your script.