gtk-gnutella - Man Page

A Gnutella client for Gtk+




gtk-gnutella is a GTK+ Gnutella client for Unix. It supports both searching and sharing with the 0.6 version of the Gnutella protocol and includes support for numerous protocol improvements and additions that have been added to the Gnutella network since.

The Gnutella network allows users to search for files and to advertise files shared locally, but is not handling file transfers which is done through HTTP.  The addition of Gnutella-specific HTTP headers makes each Gnutella client a powerful file swarmer where even firewalled hosts can contribute.

Great care has been devoted into making gtk-gnutella powerful, efficient and reliable.


All the options can be abbreviated as long as the supplied name is not ambiguous.


For developers mostly: this requests a final memory cleanup sequence at exit time in an attempt to be able to spot memory leaks by looking at all the remaining allocated blocks, letting the developpers figuring out, perhaps, why they were not cleaned-up properly.


Tell gtk-gnutella to output a list of variables describing compile-time configuration information that was gathered when the program was built.


This options causes gtk-gnutella to become a daemon. It detaches from the terminal (if started from one) and forks itself into the background. It also changes it working directory to the root directory i.e., "/" so that it doesn't block a mount point for example. This is mainly meant for headless mode but you can also use it if the Gtk+ GUI is enabled.

For example, if you do not start gtk-gnutella from a terminal but from a window manager menu, there's little reason to not daemonize gtk-gnutella. Thus you might want to add the --daemonize option in this case.

Please note that when gtk-gnutella is started as a daemon all output which is normally send to the standard output and standard error output (usually your terminal or a common log file such as ~/.xsession-errors), is sent to /dev/null. The options --log-stderr and --log-stdout can be used to redirect log output in this case.

--exec-on-crash path

Execute command specified in path when gtk-gnutella crashes.


This option can be used to force the main window of the GUI to a certain location on your screen and/or give it certain dimensions.

For example, the following would position the window in the lower right corner with a width of 800 pixels and a height of 600 pixels:

   gtk-gnutella --geometry 800x600-0-0

Note that none of this can be guaranteed, your window manager has the last word on this. This option is a traditional command-line switch supported by most X11 applications.


Show a summary of all supported options.

--log-stderr , --log-stdout

These options allow you to log everything which is written to stderr respectively stdout to some files. A typical use would look like this:

  gtk-gnutella --daemonize  \
       --log-stderr ~/logs/gtkg.stderr \
       --log-stdout ~/logs/gtkg.stdout

Redirecting these log messages also works without --daemonize. Of course, log files can become large and you might want to archive them or delete them periodically. After moving or deleting the log files, you can send gtk-gnutella a SIGHUP signal to create new log files.


Redirects the logs for the supervisor process.


Launches gtk-gnutella with a minimized main window. Recommended when starting gtk-gnutella in the background on login.


Disable notifications of gtk-gnutella events to D-BUS.


Disable GUI popups when gtk-gnutella has expired.  This is not the default behaviour because we wish to keep the network healthy by having recent versions running, but at the same time we understand not everyone can or wants to upgrade in a timely manner.


Prevents gtk-gnutella from auto-restarting itself when crashing on a platform where core dumps are not possible or disabled.


Prevents gtk-gnutella from starting a supervising process that will monitor the main process and automatically restart a new instance when the previous one exits abnormally.


Disable MIT shared memory extension, when running with the X graphical user-interface.


Pause the process on crash, so that a debugger may be attached to inspect the current state for instance.


This option allows you to check whether gtk-gnutella is currently running. This option returns with a success code when gtk-gnutella is already running, and with a failure code when it is not.

This allows you to use the following code to start gtk-gnutella from a cron job or window manager menu and avoid starting it twice:

   gtk-gnutella --ping || gtk-gnutella


Asks gtk-gnutella to auto-restart itself after crashing on a platform where core dumps are allowed.

Regardless of core dumping options, --no-restart will always prevent a restart whilst --restart-on-crash will always request one if possible.  It is not allowed to supply both options at the same time.


Requests that the previous session be continued.  This means that searches launched for the duration of the session only will not expire, that seeded files will continue to be seeded, and that all the other aspects persisted during the previous session will be restored (current tab for instance).


When this option is used to connect to an already running gtk-gnutella process over a local unix domain socket. This socket is located at "$GTK_GNUTELLA_DIR/ipc/socket", thus normally "~/.gtk-gnutella/ipc/socket". The socket is only accessible by the user running gtk-gnutella which is enforced by filesystem permissions. The socket is in a dedicated directory because apparently not all systems honor the access permissions on sockets as seen through the filesystem.

You can disable this feature by setting the property "enable_local_socket" to FALSE. It is recommendable to use this local socket whenever possible instead of the TCP socket to access the shell interface remotely. The reason is that the authentication token is passed non-encrypted over the network and everyone who can sniff the network is able to connect to the remote shell. This may not matter over the loopback interface or a LAN, but it's a bad idea to use this over the Internet.


Starts gtk-gnutella without the graphical user-interface.


For developers mostly: this requests that I/O polling be done exclusively through the poll() interface instead of more modern and efficient epoll() or kqueue() system calls.


Show the user-agent string used on the Gnutella network which also holds the version information.

Getting Started

When gtk-gnutella is first started, it will attempt to connect to a well-known hosts server for some hosts to connect to. If you know a host you want to connect to, you can enter it in the box on the GnutellaNet tab and push the Add button. When first connecting to the gnutella network, it can take some time to establish a stable connection. Be patient.


To search files just type your query in the search box at the top of the screen. All searches, both active and inactive, are shown in the sidebar.

You can have multiple searches running at once. To start another search while the first one is running, simply enter another search term into the edit box at the top of the window.

To stop a particular search and remove its tab from the search window, select the search by clicking on its tab and click the "Close search" button. If you want to clear the list for a particular search, but want to continue to see new files that are received for this search, click the "Clear results" button.

It is possible to apply filtering to search results using the filter editor. Click on "Edit filters" to access the editor. Use of the filtering editor goes beyond the scope of this man page, but there is a tutorial on this topic on the gtk-gnutella homepage.

When you find a file that you want to download, select the file in the list and click "Download selected". This file will be placed in the download queue. On the downloads view you can watch the download progress of the file(s) you are downloading.

It is also possible to select a bunch of files for downloading at once. By holding down the control or shift keys while clicking files, you can select several files and then click "Download selected" to put them all in the download queue at once.


Most of the configuration can be done via the "Preferences" window that can be accesed using the "File -> Preferences" menu-option.  You will find several tabs there, each tab regrouping common information. But some specific information pertaining to downloads or searches are directly available on the "Downloads" and "Uploads" panes.

If you linger your mouse over each configuration parameter, a tooltip window will popup explaining the meaning of that parameter.  You may have to press "Enter" after a text input, or move the focus to another parameter to validate your entry.  Items configured via spin buttons normally take effect immediately, unless you type text instead of using the spin buttons.



Per-user configuration file, for core settings. This can be edited when the program is not running, but it is best to use the GUI to change configuration variables. gtk-gnutella saves this file every time the program is exited normally.


GUI configuration.  It is best to not edit this file.


This is where the download mesh is persisted.  You don't need to worry about this.


This is where temporarily banned download mesh entries are stored.


This file holds the name and size of files completely downloaded by gtk-gnutella and which will now be ignored.


This file holds the SHA1 of files completely downloaded by gtk-gnutella and which will now be ignored.


This is where the download queue is persisted.  Only the direct downloads (i.e. non-pushed) can be saved, since they don't need routing information.


This is the host cache. This is saved by gtk-gnutella on exit and should not be edited by hand.


This is where the open searches and all the search filters are saved.


This is where the cache of all the computed SHA1 is stored.


This is the directory under which all the computed TTH trees are stored. These files are binary data.


This file keeps track of the upload statistics.


gtk-gnutella searches GTK_GNUTELLA_DIR for configuration files. If this variable is not set, HOME is used instead. If HOME is not set, then no configuration information will be saved when gtk-gnutella exits.

Mailing Lists

There are a couple of mailing lists for gtk-gnutella. See for more info.


gtk-gnutella is production-quality software, but still has minor bugs and incomplete or missing features.  But which software doesn't for its authors?

There are probably other missing features that should be listed here.

A list of known bugs might be available at the gtk-gnutella web site (see below.)

See Also

Additional information about gtk-gnutella and the latest version are available at

Additional information about gnutella is available at


Yann Grossel wrote the original gtk-gnutella which was running as a Gnutella 0.4 client in 2000.

Raphael Manfredi <> is the current maintainer and project leader (since version 0.14, released early September 2001).
For support, please contact the developer list, which can be reached at <>.

For a full list of contributors, open the "About" menu.

Brian St. Pierre <> wrote the initial version of this manpage.


July 2020 Version 1.2.0