Initial checkin of Pika from heckimp

This commit is contained in:
2023-09-25 15:35:21 -07:00
commit 891e999216
6761 changed files with 5240685 additions and 0 deletions

61
docs/meson.build Normal file
View File

@ -0,0 +1,61 @@
# Configure_file is just here to rename the files
manconf = configuration_data()
manconf.set('PIKA_VERSION', pika_version)
manconf.set('pikadatadir', prefix / pikadatadir)
manconf.set('pikalocaledir', prefix / localedir)
manconf.set('pikaplugindir', prefix / pikaplugindir)
manconf.set('manpage_pikadir', '$XDG_CONFIG_HOME/' + pikadir / pika_app_version)
manconf.set('pikasysconfdir', prefix / pikasysconfdir)
manconf.set('mypaint_brushes_dir', mypaint_brushes_dir)
man_files = [
configure_file(
input : 'pikatool.1.in',
output: 'pikatool-' + pika_app_version + '.1',
configuration: manconf,
),
configure_file(
input : 'pikarc.5.in',
output: 'pikarc-' + pika_app_version + '.5',
configuration: manconf,
),
]
if enable_console_bin
man_files += configure_file(
input : 'pika.1.in',
output: 'pika-console-' + pika_app_version + '.1',
configuration: manconf,
)
endif
man_files += configure_file(
input : 'pika.1.in',
output: 'pika-' + pika_app_version + '.1',
configuration: manconf,
)
install_man(man_files)
if enable_default_bin and meson.version().version_compare('>=0.61.0')
install_symlink('pikatool.1',
pointing_to: 'pikatool-' + pika_app_version + '.1',
install_dir: get_option('mandir') + '/man1'
)
install_symlink('pikarc.5',
pointing_to: 'pikarc-' + pika_app_version + '.5',
install_dir: get_option('mandir') + '/man5'
)
if enable_console_bin
install_symlink('pika-console.1',
pointing_to: 'pika-console-' + pika_app_version + '.1',
install_dir: get_option('mandir') + '/man1'
)
endif
install_symlink('pika.1',
pointing_to: 'pika-' + pika_app_version + '.1',
install_dir: get_option('mandir') + '/man1'
)
endif

357
docs/pika.1.in Normal file
View File

@ -0,0 +1,357 @@
.TH PIKA 1 "March 23 2008" "Version @PIKA_VERSION@" "PIKA Manual Pages"
.SH NAME
pika - an image manipulation and paint program.
.SH SYNOPSIS
.B pika
[\-h] [\-\-help] [\-\-help-all] [\-\-help-gtk] [-v] [\-\-version]
[\-\-license] [\-\-verbose] [\-n] [\-\-new\-instance] [\-a] [\-\-as\-new]
[\-i] [\-\-no\-interface] [\-d] [\-\-no\-data] [\-f] [\-\-no\-fonts]
[\-s] [\-\-no\-splash] [\-\-no\-shm] [\-\-no\-cpu\-accel]
[\-\-display \fIdisplay\fP] [\-\-session \fI<name>\fP]
[\-g] [\-\-pikarc \fI<pikarc>\fP] [\-\-system\-pikarc \fI<pikarc>\fP]
[\-\-dump\-pikarc\fP] [\-\-console\-messages] [\-\-debug\-handlers]
[\-\-stack\-trace\-mode \fI<mode>\fP] [\-\-pdb\-compat\-mode \fI<mode>\fP]
[\-\-batch\-interpreter \fI<procedure>\fP] [\-b] [\-\-batch \fI<command>\fP]
[\fIfilename\fP] ...
.SH DESCRIPTION
.PP
PIKA is the \fIPhoto and Image Kooker Application\fP. It is used to edit
and manipulate images. It can load and save a variety of image formats
and can be used to convert between formats.
.PP
PIKA can also be used as a paint program. It features a set of drawing
and painting tools such as airbrush, clone, pencil, and paint
brush. Painting and drawing tools can be applied to an image with a
variety of paint modes. It also offers an extensive array of
selection tools like rectangle, ellipse, fuzzy select, bezier select,
intelligent scissors, and select by color.
.PP
PIKA offers a variety of plug-ins that perform a variety of image
manipulations. Examples include bumpmap, edge detect, gaussian blur,
and many others. In addition, PIKA has several scripting extensions
which allow for advanced non-interactive processing and creation of
images.
.PP
PIKA ships with a second binary called \fIpika-console\fP. This binary
is a console-only version and behaves as if \fIpika\fP was called with
the \-\-no\-interface command\-line option.
.PP
On platforms with the D-Bus message bus system, PIKA will by default check
if an instance is already running in this user session. If it detects that,
it will pass all filenames given on the command-line to the already running
PIKA instance and quit.
.SH OPTIONS
PIKA accepts the following options:
.TP 8
.B \-h, \-\-help
Show PIKA command\-line options.
.TP 8
.B \-\-help\-all
Show all command\-line options.
.TP 8
.B \-\-help-gtk
Show GTK command\-line options.
.TP 8
.B \-\-help-gegl
Show GEGL command\-line options.
.TP 8
.B \-v, \-\-version
Output version information and exit. When combined with the \-\-verbose
option, version information about libraries used by PIKA is shown as well.
.TP 8
.B \-\-license
Output license information and exit.
.TP 8
.B \-\-verbose
Be verbose and create information on standard output.
.TP 8
.B \-n, \-\-new\-instance
Do not attempt to reuse an already running PIKA instance. Always start a
new one.
.TP 8
.B \-a, \-\-as\-new
Open filenames passed on the command-line as new images, don't set the
filename on them.
.TP 8
.B \-i, \-\-no\-interface
Run without a user interface.
.TP 8
.B \-d, \-\-no\-data
Do not load patterns, gradients, palettes, or brushes. Often useful
in non-interactive situations where startup time is to be minimized.
.TP 8
.B \-f, \-\-no\-fonts
Do not load any fonts. No text functionality will be available if this
option is used.
.TP 8
.B \-\-display \fIdisplay\fP
Use the designated X display.
.TP 8
.B \-s, \-\-no\-splash
Do not show the splash screen.
.TP 8
.B \-\-no\-shm
Do not use shared memory between PIKA and its plug-ins.
Instead of using shared memory, PIKA will send the data via pipe. This
will result in slower performance than using shared memory.
.TP 8
.B \-\-no\-cpu\-accel
Do not use CPU accelerations such as MMX or SSE even if PIKA detects
that your CPU provides this functionality.
.TP 8
.B \-\-session \fI<name>\fP
Use a different sessionrc for this PIKA session. The given session
name is appended to the default sessionrc filename.
.TP 8
.B \-g, \-\-pikarc \fI<pikarc>\fP
Use an alternative pikarc instead of the default one. Useful in
cases where plug-in paths or machine specs may be different.
.TP 8
.B \-\-system\-pikarc \fI<pikarc>\fP
Use an alternate system pikarc file.
.TP 8
.B \-\-dump\-pikarc
Output a pikarc file with default settings.
.TP 8
.B \-\-debug\-handlers
Enable debugging signal handlers.
.TP 8
.B \-c, \-\-console\-messages
Do not popup dialog boxes on errors or warnings. Print the messages on
the console instead.
.TP 8
.B \-\-stack\-trace\-mode \fI{never|query|always}\fP
If a stack-trace should be generated in case of fatal signals.
.TP 8
.B \-\-pdb\-compat\-mode \fI{off|on|warn}\fP
If the PDB should provide aliases for deprecated functions.
.TP 8
.B \-\-batch-interpreter \fI<procedure>\fP
Specifies the procedure to use to process batch events. The default is
to let Script-Fu evaluate the commands.
.TP 8
.B \-b, \-\-batch \fI<command>\fP
Execute \fI<command>\fP non-interactively. This option may appear
multiple times. The \fI<command>\fP is passed to the batch
interpreter. When \fI<command>\fP is \fB-\fP the commands are read
from standard input.
.SH ENVIRONMENT
PIKA respects a number of environment variables.
.PP
.TP 8
.B DISPLAY
to get the default host and display number.
.TP 8
.B PIKA3_DIRECTORY
to get the name of the personal PIKA directory. If unset @manpage_pikadir@ is
used. If this is an absolute path, it is used as is. If it is a
relative path, it is taken to be a subdirectory of \fB$XDG_CONFIG_HOME\fP.
.TP 8
.B PIKA3_DATADIR
to get the base location for data files such as brushes and patterns.
If unset @pikadatadir@ is used.
.TP 8
.B PIKA3_LOCALEDIR
to get the base location for translations. If unset @pikalocaledir@
is used.
.TP 8
.B PIKA3_PLUGINDIR
to get the base location for plug-ins and modules. If unset
@pikaplugindir@ is used.
.TP 8
.B PIKA3_SYSCONFDIR
to get the location of configuration files. If unset @pikasysconfdir@
is used.
.TP 8
.B PIKA3_CACHEDIR
to get the location for caches files. If unset the system default for
per-user cached files is used.
.TP 8
.B PIKA3_TEMPDIR
to get the location of temporary files. If unset the system default for
temporary files is used.
On Linux PIKA can be compiled with support for binary relocatibility.
This will cause data, plug-ins and configuration files to be searched
relative to the location of the pika executable file unless overridden
by the environment variables mentioned above.
.SH FILES
PIKA's data files are stored in @pikadatadir@, where ${datarootdir}
is set on install, but is typically /usr/share. PIKA's system-wide
configuration files are stored in @pikasysconfdir@, where ${prefix}
is typically /usr.
Most PIKA configuration is read in from the user's init file,
@manpage_pikadir@/pikarc. The system wide equivalent is in
@pikasysconfdir@/pikarc. The system wide file is parsed first and the
user pikarc can override the system settings.
@pikasysconfdir@/pikarc_user is the default pikarc placed in users'
home directories the first time PIKA is run.
@manpage_pikadir@/devicerc - holds settings for input devices together
with the tool, colors, brush, pattern and gradient associated to that
device.
@manpage_pikadir@/gtkrc - users set of PIKA-specific GTK config
settings. Options such as widget color and fonts sizes can be set
here.
@pikasysconfdir@/gtkrc - system wide default set of PIKA-specific GTK
config settings.
@manpage_pikadir@/shortcutsrc - user's set of keybindings.
@manpage_pikadir@/parasiterc - Stores all persistent PIKA
parasites. This file will be rewritten every time you quit PIKA.
@manpage_pikadir@/sessionrc - This file takes session-specific info
(that is info, you want to keep between two PIKA sessions). You are
not supposed to edit it manually, but of course you can do. This file
will be entirely rewritten every time you quit PIKA. If this file
isn't found, defaults are used.
@manpage_pikadir@/templaterc - Image templates are kept in this
file. New images can conveniently created from these templates. If
this file isn't found, defaults are used.
@pikasysconfdir@/unitrc - default user unit database. It contains the
unit definitions for centimeters, meters, feet, yards, typographic
points and typographic picas and is placed in users home directories
the first time PIKA is ran. If this file isn't found, defaults are
used.
@manpage_pikadir@/unitrc - This file contains your user unit
database. You can modify this list with the unit editor. You are not
supposed to edit it manually, but of course you can do. This file
will be entirely rewritten every time you quit PIKA.
@manpage_pikadir@/plug-ins - location of user installed plug-ins.
@manpage_pikadir@/pluginrc - plug-in initialization values are stored
here. This file is parsed on startup and regenerated if need be.
@manpage_pikadir@/modules - location of user installed modules.
@manpage_pikadir@/tmp - default location that PIKA uses as temporary
space.
@pikadatadir@/brushes - system wide brush files.
@manpage_pikadir@/brushes - user created and installed brush
files. These files are in the .gbr, .gih or .vbr file formats.
@manpage_pikadir@/curves - Curve profiles and presets as saved from
the Curves tool.
@manpage_pikadir@/pikaressionist - Presets and user created brushes
and papers are stored here.
@manpage_pikadir@/levels - Level profiles and presets as saved from
the Levels tool.
@pikadatadir@/palettes - the system wide palette files.
@manpage_pikadir@/palettes - user created and modified palette
files. This files are in the .gpl format.
@pikadatadir@/patterns - basic set of patterns for use in PIKA.
@manpage_pikadir@/patterns - user created and installed pika pattern
files. This files are in the .pat format.
@pikadatadir@/gradients - standard system wide set of gradient files.
@manpage_pikadir@/gradients - user created and installed gradient
files.
@pikadatadir@/scripts - system wide directory of scripts
used in Script-Fu and other scripting extensions.
@manpage_pikadir@/scripts - user created and installed scripts.
@pikadatadir@/gflares - system wide directory used by the gflare
plug-in.
@manpage_pikadir@/gflares - user created and installed gflare
files.
@pikadatadir@/gfig - system wide directory used by the gfig plug-in.
@manpage_pikadir@/gfig - user created and installed gfig files.
@pikadatadir@/images/pika\-splash.png - the default image used for the
PIKA splash screen.
@pikadatadir@/images/pika\-logo.png - image used in the PIKA about
dialog.
@pikadatadir@/tips/pika\-tips.xml - tips as displayed in the "Tip of
the Day" dialog box.
.SH SPLASH IMAGES
PIKA comes with a default image for the splash screen but it allows
system administrators and users to customize the splash screen by
providing other images. The image to be used with the splash screen is
chosen as follows:
.IP 1.
PIKA tries to load a random splash screen from the directory
@manpage_pikadir@/splashes.
.IP 2.
It then falls back to using @manpage_pikadir@/pika\-splash.png.
.IP 3.
If the user didn't install any custom splash images, a random image is
picked from @pikadatadir@/splashes.
.IP 4.
As a last resort, PIKA uses the default splash image located at
@pikadatadir@/images/pika\-splash.png.
.SH SUGGESTIONS AND BUG REPORTS
Any bugs found should be reported to the online bug-tracking system
available on the web at
https://gitlab.gnome.org/GNOME/pika/issues. Before reporting bugs,
please check to see if the bug has already been reported.
When reporting PIKA bugs, it is important to include a reliable way to
reproduce the bug, version number of PIKA (and probably GTK), OS name
and version, and any relevant hardware specs. If a bug is causing a
crash, it is very useful if a stack trace can be provided. And of
course, patches to rectify the bug are even better.
.SH OTHER INFO
The canonical place to find PIKA info is at https://heckin.technology/AlderconeStudio/PIKApp/.
Here you can find links to just about many other PIKA sites,
tutorials, data sets, mailing list archives, and more.
There is also a PIKA User Manual available at https://docs.pika.org/
that goes into much more detail about the interactive use of PIKA.
The latest versions of PIKA and the GTK libs are always available at
https://download.pika.org/.
.SH AUTHORS
Based on work by Spencer Kimball, Peter Mattis and the GnuImp Development Team.
With patches, fixes, plug-ins, extensions, scripts, translations,
documentation and more from lots and lots of people all over the
world.
.SH "SEE ALSO"
.BR pikarc (5),
.BR pikatool (1),

1487
docs/pikarc.5.in Normal file

File diff suppressed because it is too large Load Diff

235
docs/pikatool.1.in Normal file
View File

@ -0,0 +1,235 @@
.TH PIKATOOL\-2.0 1 "Version @PIKA_VERSION@" "PIKA Manual Pages"
.SH NAME
pikatool\-2.0 - script to perform various PIKAy functions
.SH SYNOPSIS
.B pikatool\-2.0
[\-\-prefix\fI[=DIR]\fP] [\-\-exec\-prefix\fI[=DIR]\fP] [\-\-version]
[\-\-help] [\-\-quiet] [\-\-silent] [\-n] [\-\-just-print] [\-\-dry-run]
[\-\-recon] [\-\-msvc-syntax]
[\-\-bindir] [\-\-sbindir] [\-\-libexecdir] [\-\-datadir]
[\-\-sysconfdir] [\-\-sharedstatedir] [\-\-localstatedir] [-\-libdir]
[\-\-infodir] [\-\-mandir] [\-\-includedir] [\-\-pikaplugindir]
[\-\-pikadatadir] [\-\-libs] [\-\-libs-noui] [\-\-cflags] [\-\-cflags-noi]
[\-\-build \fIplug\-in.c\fP]
[\-\-build\-strip \fIplug\-in.c\fP] [\-\-install \fIplug\-in.c\fP]
[\-\-install-strip \fIplug\-in.c\fP] [\-\-install-admin \fIplug-in.c\fP]
[\-\-install\-bin \fIplug\-in\fP]
[\-\-install\-admin\-strip \fIplug-in.c\fP]
[\-\-install\-bin\-strip \fIplug\-in\fP]
[\-\-\install\-admin\-bin \fIplug\-in\fP]
[\-\-install\-script \fIscript.scm\fP]
[\-\-\install\-admin\-script \fIscript.scm\fP]
[\-\-uninstall\-bin \fIplug\-in\fP] [\-\-uninstall\-admin\-bin \fIplug\-in\fP]
[\-\-uninstall\-script \fIscript.scm\fP]
[\-\-uninstall\-admin\-script \fIscript.scm\fP]
.SH DESCRIPTION
.PP
\fIpikatool\-2.0\fP is a tool that can, among other things, build
plug-ins or scripts and install them if they are distributed in one
source file.
.PP
\fIpikatool\-2.0\fP can also be used by programs that need to know what
libraries and include-paths \fIPIKA\fP was compiled with. \fIpikatool\-2.0\fP
uses \fIpkg-config\fP for this task. For use in Makefiles, it is recommended
that you use \fIpkg-config\fP directly instead of calling \fIpikatool\-2.0\fP.
.SH OPTIONS
\fIpikatool\-2.0\fP accepts the following options:
.TP 8
.B \-\-version
Print the currently installed version of \fIPIKA\fP on the standard output.
.TP 8
.B \-\-help
Print out the help blurb, showing commonly used commandline options.
.TP 8
.B \-\-quiet
Run quietly without echoing any of the build commands.
.TP 8
.B \-\-silent
Run silently without echoing any of the build commands. Same as \-\-quiet.
.TP 8
.B \-n
Test mode. Print the commands but don't actually execute them. Useful for
making dry runs for testing.
.TP 8
.B \-\-just-print
Test mode. Print the commands but don't actually execute them. Same as \-n.
.TP 8
.B \-\-dry-run
Test mode. Print the commands but don't actually execute them. Same as \-n.
.TP 8
.B \-\-recon
Test mode. Print the commands but don't actually execute them. Same as \-n.
.TP 8
.B \-\-msvc-syntax
Useful on Windows. Outputs the compiler and linker flags in the syntax
used by Microsoft's toolchain. Passed to the pkg-config command that
does most of \fIpikatool\-2.0\fP's work.
.TP 8
.B \-\-bindir
Outputs the bindir used to install the \fIPIKA\fP.
.TP 8
.B \-\-sbindir
Outputs the sbindir used to install the \fIPIKA\fP.
.TP 8
.B \-\-libexecdir
Outputs the libexecdir used to install the \fIPIKA\fP.
.TP 8
.B \-\-datadir
Outputs the datadir used to install the \fIPIKA\fP.
.TP 8
.B \-\-sysconfdir
Outputs the sysconfdir used to install the \fIPIKA\fP.
.TP 8
.B \-\-sharedstatedir
Outputs the sharedstatedir used to install the \fIPIKA\fP.
.TP 8
.B \-\-localstatedir
Outputs the localstatedir used to install the \fIPIKA\fP.
.TP 8
.B \-\-libdir
Outputs the libdir used to install the \fIPIKA\fP.
.TP 8
.B \-\-infodir
Outputs the infodir used to install the \fIPIKA\fP.
.TP 8
.B \-\-mandir
Outputs the mandir used to install the \fIPIKA\fP.
.TP 8
.B \-\-includedir
Outputs the includedir used to install the \fIPIKA\fP.
.TP 8
.B \-\-pikadatadir
Outputs the actual directory where the \fIPIKA\fP data files were installed.
.TP 8
.B \-\-pikaplugindir
Outputs the actual directory where the \fIPIKA\fP plug-ins were installed.
.TP 8
.B \-\-build \fIplug-in.c\fP
Compile and link \fIplug-in.c\fP into a \fIPIKA\fP plug-in.
.TP 8
.B \-\-build\-strip \fIplug-in.c\fP
Compile,link, and strip \fIplug-in.c\fP into a \fIPIKA\fP plug-in.
.TP 8
.B \-\-install \fIplug-in.c\fP
Compile, link, and install \fIplug-in.c\fP into the user's personal
\fIPIKA\fP plug-in directory (@manpage_pikadir@/plug-ins)
.TP 8
.B \-\-install\-strip \fIplug-in.c\fP
Compile, link,strip, and install \fIplug-in.c\fP into the user's
personal \fIPIKA\fP
plug-in directory (@manpage_pikadir@/plug-ins)
.TP 8
.B \-\-install\-admin \fIplug-in.c\fP
Compile, link, and install \fIplug-in.c\fP into the system-wide \fIPIKA\fP
plug-in directory (@pikaplugindir@/plug-ins)
.TP 8
.B \-\-install\-bin \fIplug-in\fP
Install \fIplug-in\fP into the user's personal \fIPIKA\fP
plug-in directory (@manpage_pikadir@/plug-ins)
.TP 8
.B \-\-install\-admin\-bin \fIplug-in\fP
Install \fIplug-in\fP into the system-wide \fIPIKA\fP
plug-in directory (@pikaplugindir@/plug-ins)
.TP 8
.B \-\-install\-bin\-strip \fIplug-in\fP
Install stripped \fIplug-in\fP into the user's personal \fIPIKA\fP
plug-in directory (@manpage_pikadir@/plug-ins)
.TP 8
.B \-\-install\-admin\-bin\-strip \fIplug-in\fP
Install stripped \fIplug-in\fP into the system-wide \fIPIKA\fP
plug-in directory (@pikaplugindir@/plug-ins)
.TP 8
.B \-\-install\-script \fIscript.scm\fP
Install \fIscript.scm\fP into the user's personal \fIPIKA\fP
script directory (@manpage_pikadir@/scripts)
.TP 8
.B \-\-install\-admin\-script \fIscript.scm\fP
Install \fIscript.scm\fP into the system-wide \fIPIKA\fP
script directory (@pikadatadir@/scripts)
.TP 8
.B \-\-uninstall\-bin \fIplug-in\fP
Uninstall \fIplug-in\fP from the user's personal \fIPIKA\fP
plug-in directory (@manpage_pikadir@/plug-ins)
.TP 8
.B \-\-uninstall\-admin\-bin \fIplug-in\fP
Uninstall \fIplug-in\fP from the system-wide \fIPIKA\fP
plug-in directory (@pikaplugindir@/plug-ins)
.TP 8
.B \-\-uninstall\-script \fIscript.scm\fP
Uninstall \fIscript.scm\fP from the user's personal \fIPIKA\fP
script directory (@manpage_pikadir@/scripts)
.TP 8
.B \-\-uninstall\-admin\-script \fIscript.scm\fP
Uninstall \fIscript.scm\fP from the system-wide \fIPIKA\fP
script directory (@pikadatadir@/scripts)
.TP 8
.B \-\-libs
Print the linker flags that are necessary to link a \fIPIKA\fP plug-in.
.TP 8
.B \-\-libs-noui
Print the linker flags that are necessary to link a \fIPIKA\fP plug-in, for
plug-ins that do not require the GTK libraries.
.TP 8
.B \-\-cflags
Print the compiler flags that are necessary to compile a \fIPIKA\fP plug-in.
.TP 8
.B \-\-clags-noui
Print the compiler flags that are necessary to compile a \fIPIKA\fP plug-in
for plug-ins that do not require the GTK libraries.
.TP 8
.B \-\-prefix=PREFIX
If specified, use PREFIX instead of the installation prefix that \fIPIKA\fP
was built with when computing the output for the \-\-cflags and
\-\-libs options. This option is also used for the exec prefix
if \-\-exec\-prefix was not specified. This option must be specified
before any \-\-libs or \-\-cflags options.
.TP 8
.B \-\-exec\-prefix=PREFIX
If specified, use PREFIX instead of the installation exec prefix that
\fIPIKA\fP was built with when computing the output for the \-\-cflags
and \-\-libs options. This option must be specified before any
\-\-libs or \-\-cflags options.
.SH ENVIRONMENT
.PP
.TP 8
.B CC
to get the name of the desired C compiler.
.TP 8
.B CFLAGS
to get the preferred flags to pass to the C compiler for plug-in building.
.TP 8
.B LDFLAGS
to get the preferred flags for passing to the linker.
.TP 8
.B LIBS
for passing extra libs that may be needed in the build process. For example,
LIBS=-lintl .
.TP 8
.B PKG_CONFIG
to get the location of the \fIpkg-config\fP program that is used to determine
details about your glib, pango, gtk and pika installation.
.SH SEE ALSO
.BR pika (1),
.BR pikarc (5),
.BR pkg\-config (1)
.SH AUTHORS
gimptool was written by Manish Singh (yosh@gimp.org) and is based on
gtk\-config by Owen Taylor (owen@gtk.org).
This man page was written by Ben Gertzfield (che@debian.org), and tweaked
by Manish Singh (yosh@gimp.org), Adrian Likins (adrian@gimp.org) and Marc
Lehmann (pcg@goof.com>).