Valknut is an open source cross platform client for the Direct Connect network.
Valknut only supports the old (but common) NMDC protocol, it has no support for the new ADC protocol from the DC++ team. If you need an ADC client, try something based on the DC++ core like LinuxDC++.
Unfortunately, due to changes in recent versions of DC++ (>= 0.696), valknut 0.3.7 may soon be no longer usable, because DC++ will be unable to download from valknut. TTHL support is also required these days, so valknut 0.3.8 is out too.
This page contains links to some of the modifications I've made to valknut.
Valknut, and these modifications to it, are distributed under the terms of the GNU General Public License (with special permission for linking with OpenSSL).
Older news Release history Project history via diffstat
Update 27/06/2008 - CStringList performance
Although CStringList can perform badly, it can also perform very well. More details.
The performance improvement from using an alternative class is much smaller than previously stated.
Release 21/06/2008
0.3.17 / 0.4.3 released. Fixes the problems with 0.3.16, has more performance improvements, and fixes 0B sharesize during the optional refresh on startup.
Available from the sourceforge file release system.
Update 18/06/2008 Changelog for upcoming 0.3.17
0.3.16 is disastrously broken, because the optimisations made to the CString class do not handle the case when the memory area assigned to one string overlaps that of another. So "s = s", "s = s.Data()+1", "s += s" and "s += s.Data()[3]" do not work. A similar problem was found in the CByteArray class, which I had not changed. Since these problems weren't spotted in testing, it's possible that nothing hit's these bugs. But the code is extremely unsafe.
If you are wondering what the optimisations are about, well, it turns out that dclib is horrifically inefficient. The problem comes from how dclib's CString class is used. Most likely, it was designed to be like QT's QString class, which, because of data sharing, is efficient to pass around by value. But CString has no data sharing! The result: simply opening and closing valknut when you have 1600 hubs stored in the public hubs list results in about 1 million CStrings getting created and destroyed. This number has now been reduced to about 335,000 by optimising various class.
Release 15/06/2008
Release 0.3.16 of dclib, 0.3.16 of QT3 valknut and 0.4.2 of QT4 valknut.
0.3.15 crashed when empty nicks (in hub welcome public chat messages) were encountered, it only existed for a few hours.
Includes all the bug fixes, performance improvements, and new features listed below. Full changelog.
Update 14/06/2008
Dclib performance problems. I have just discovered than in the worst case scenario (removing the last item),
CStringList, dclib's mapping class, can be 200 or more about 10 times slower than QHash, QDict or std::map.
QT4 valknut uses QHash in a gui class for part of the userlist, but QT3 uses CStringList.
QT3 valknut will get re-written to use QDict and dclib will get re-written to use std::map for the userlist classes,
before the 0.3.15 release.
After 0.3.15, work on new features will be postponed while dclib get's re-written to use the standard C++ library (or merged into valknut, less likely), and some of the "core" dclib classes will be removed. Valknut will be changed to use QT classes instead of dclib classes whenever possible.
I am not motivated to fix/improve dclib's CList / CStringList classes, they can just be removed.
Update 12/06/2008
There are some unfortunate problems with 0.3.14 / 0.4.0. Sadly this list just keeps getting longer.
Update later on 29/05/2008
Due to an error in the tarball generation process, some auxillary files in the original 0.3.14 tarballs were out of date.
This caused installation to fail on non-Linux systems.
Fixed tarballs versioned 0.3.14a / 0.4.0a have been released.
The source code was unchanged and the program will identify itself as 0.3.14 / 0.4.0 in the about dialog.
Update 29/05/2008
Release 0.3.14 of dclib, 0.3.14 of QT3 valknut and 0.4.0 of QT4 valknut.
Long changelog or summarised news.
The QT3 and QT4 versions have the same features. They cannot both be installed to the same --prefix, specifiy a different folder for one.
Update 15/03/2008
Released 0.3.13 of dclib and valknut. Changelog.
The changelog is very small, the only new feature added is the ability to disable the new text encoding system introduced in 0.3.11.
Source releases of dclib 0.3.14 and valknut 0.3.14 / 0.4.0 are available from sourceforge.
Or look at the user contibuted binary packages.
In paticular, packages for Mac OS X are available.
If possible, don't! It is much better to use packages supplied by your distribution if available.
There is no /xmms command built in, but it is possible to define your own commands, which can run shell scripts or other programs.
There are scripts here for Amarok, Audacious, Rhythmbox, XMMS and Kaffeine.
Download the script, place it in a folder in your $PATH such as ~/bin/ and set it executable (chmod +x).
For XMMS, you also need to download and compile xmms-tool.c, the command line to do that is in the top of xmms-tool.c. Alternatively, you could use a program like XMMS-Announcer.
Then you can define a command in valknut such as "/a" which runs "/sh amarok-now-playing.sh".
You define commands in valknut by going to the GUI then Commands tab in the Options dialog. Right click to add or remove commands, and click the text in the table to edit the commands in place.
You could even define a command such as "/d" to run "/sh /bin/bash /full/path/to/audacious-now-playing.sh" to avoid putting the script in your $PATH or setting it executable.
You can use the new forum on the sourceforge project page. I'm "ejs1920". You can also email me: ejs1920 at yahoo dot co dot uk. Make sure you include valknut in the email subject, otherwise your message may be indistinguishable from the large quantities of spam that I receive.
You might alternatively like to use the sourceforge bug tracker or the sourceforge feature request tracker.
Hosted by sourceforge