gtk-gnutella - Man Page
A Gnutella client for Gtk+
Synopsis
gtk-gnutella
Description
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.
Options
All the options can be abbreviated as long as the supplied name is not ambiguous.
- --cleanup
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.
- --compile-info
Tell gtk-gnutella to output a list of variables describing compile-time configuration information that was gathered when the program was built.
- --daemonize
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.
- --geometry
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.
- --help
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.stdoutRedirecting 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.
- --log-supervise
Redirects the logs for the supervisor process.
- --minimized
Launches gtk-gnutella with a minimized main window. Recommended when starting gtk-gnutella in the background on login.
- --no-dbus
Disable notifications of gtk-gnutella events to D-BUS.
- --no-expire
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.
- --no-restart
Prevents gtk-gnutella from auto-restarting itself when crashing on a platform where core dumps are not possible or disabled.
- --no-supervise
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.
- --no-xshm
Disable MIT shared memory extension, when running with the X graphical user-interface.
- --pause-on-crash
Pause the process on crash, so that a debugger may be attached to inspect the current state for instance.
- --ping
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
- --restart-on-crash
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.
- --resume-session
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).
- --shell
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.
- --topless
Starts gtk-gnutella without the graphical user-interface.
- --use-poll
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.
- --version
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.
Searching
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.
Configuration
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.
Files
- $GTK_GNUTELLA_DIR/config_gnet
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.
- $GTK_GNUTELLA_DIR/config_gui
GUI configuration. It is best to not edit this file.
- $GTK_GNUTELLA_DIR/dmesh
This is where the download mesh is persisted. You don't need to worry about this.
- $GTK_GNUTELLA_DIR/dmesh_ban
This is where temporarily banned download mesh entries are stored.
- $GTK_GNUTELLA_DIR/done.namesize
This file holds the name and size of files completely downloaded by gtk-gnutella and which will now be ignored.
- $GTK_GNUTELLA_DIR/done.sha1
This file holds the SHA1 of files completely downloaded by gtk-gnutella and which will now be ignored.
- $GTK_GNUTELLA_DIR/downloads
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.
- $GTK_GNUTELLA_DIR/hosts
This is the host cache. This is saved by gtk-gnutella on exit and should not be edited by hand.
- $GTK_GNUTELLA_DIR/searches.xml
This is where the open searches and all the search filters are saved.
- $GTK_GNUTELLA_DIR/sha1_cache
This is where the cache of all the computed SHA1 is stored.
- $GTK_GNUTELLA_DIR/tth_cache
This is the directory under which all the computed TTH trees are stored. These files are binary data.
- $GTK_GNUTELLA_DIR/upload_stats
This file keeps track of the upload statistics.
Environment
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 http://sourceforge.net/mail/?group_id=4467 for more info.
Bugs
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 http://gtk-gnutella.sourceforge.net/
Additional information about gnutella is available at http://www.the-gdf.org/ http://www.infoanarchy.org/en/Gnutella http://rfc-gnutella.sourceforge.net/
Authors
Yann Grossel wrote the original gtk-gnutella which was running as a Gnutella 0.4 client in 2000.
Raphael Manfredi <Raphael_Manfredi@pobox.com> 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 <gtk-gnutella-devel@lists.sourceforge.net>.
For a full list of contributors, open the "About" menu.
Brian St. Pierre <bstpierre@bstpierre.org> wrote the initial version of this manpage.
Copyright
gtk-gnutella is Copyright (c) 2000, Yann Grossel, with additional copyrights held by other contributors 2000-2020
License to use and copy gtk-gnutella is given under the terms of the GNU General Public License (GPL), version 2. Please see the file COPYING in the distribution for complete information.
This manual page can also be redistributed under the same conditions as gtk-gnutella itself.