[gimp-web/testing] Convert line endings to unix format
- From: Michael Schumacher <schumaml src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp-web/testing] Convert line endings to unix format
- Date: Mon, 23 Nov 2015 19:24:52 +0000 (UTC)
commit ce810a85c2abe64b73f2b018dd935d0fcc6c7eb4
Author: Michael Schumacher <schumaml gmx de>
Date: Mon Nov 23 20:24:27 2015 +0100
Convert line endings to unix format
content/about/ancient_history.md | 262 ++--
content/about/meta/frontpage.md | 254 ++--
content/about/meta/markdown.md | 590 +++---
content/about/meta/translating.fr.md | 20 +-
content/about/meta/translating.md | 242 ++--
content/about/meta/translations.fr.md | 156 +-
content/about/meta/translations.md | 238 ++--
content/about/meta/using-pelican/index.md | 306 ++--
content/about/prehistory.md | 572 +++---
content/books/index.md | 562 +++---
content/bugs/howtos/bugzilla.md | 130 +-
content/bugs/howtos/submit-patch.md | 190 +-
content/bugs/index.md | 154 +-
content/bugs/why_bugzilla.md | 62 +-
content/docs/gimp-print/print.md | 462 +++---
content/docs/index.md | 114 +-
content/docs/script-fu-update.md | 174 +-
content/docs/userfaq-old.md | 1228 ++++++------
content/docs/userfaq.md | 472 +++---
content/donating/sponsors.md | 64 +-
content/downloads/install_help.md | 192 +-
content/frontpage/index.md | 14 +-
content/links/index.md | 352 ++--
content/links/org.md | 94 +-
content/man/gimp-remote.md | 224 +-
content/man/gimp.md | 636 +++---
content/man/gimprc.md | 2146 ++++++++++----------
content/man/gimptool.md | 522 +++---
content/release-notes/gimp-2.2.md | 96 +-
content/release-notes/gimp-2.3.3.md | 42 +-
content/release-notes/gimp-2.3.md | 98 +-
content/release-notes/gimp-2.4-cm.md | 70 +-
content/release-notes/gimp-2.4-videos.md | 82 +-
content/release-notes/gimp-2.4.md | 336 ++--
content/release-notes/gimp-2.5.md | 162 +-
content/release-notes/gimp-2.6.md | 388 ++--
content/release-notes/gimp-2.7.md | 568 +++---
content/release-notes/gimp-2.8.md | 562 +++---
content/release-notes/index.md | 42 +-
content/screenshots/index.md | 98 +-
content/source/howtos/gimp-git-build.md | 92 +-
content/source/index.md | 438 ++--
content/tutorials/3d_Logo/index.md | 512 +++---
content/tutorials/Advanced_Animations/index.md | 160 +-
content/tutorials/Anti-Aliased_Threshold/index.md | 92 +-
.../tutorials/Automate_Editing_in_GIMP/index.md | 1372 +++++++-------
content/tutorials/AutomatedJpgToXcf/index.md | 710 ++++----
content/tutorials/Basic_Batch/index.md | 178 +-
content/tutorials/Basic_Color_Curves/index.md | 806 ++++----
content/tutorials/Basic_Scheme/index.md | 1082 +++++-----
content/tutorials/Basic_Scheme2/index.md | 302 ++--
content/tutorials/Bezier_Selections/index.md | 86 +-
content/tutorials/Blending_Exposures/index.md | 404 ++--
content/tutorials/GIMP_Quickies/index.md | 538 +++---
content/unix/fonts.md | 98 +-
55 files changed, 9923 insertions(+), 9923 deletions(-)
---
diff --git a/content/about/ancient_history.md b/content/about/ancient_history.md
index aa9179e..c6c949f 100644
--- a/content/about/ancient_history.md
+++ b/content/about/ancient_history.md
@@ -1,131 +1,131 @@
-Title: A Brief (and Ancient) History of GIMP
-Date: 2015-07-29T14:40:35-05:00
-Modified: 2015-07-29T14:40:43-05:00
-Author: Pat David
-Summary:
-
-
-## A Brief History of GIMP
-
-> _Editor's note:_ This history was written around the release of GIMP 1.0 in 1998 and has actually become a
historical document all on its own. Some of the dates are not accurate (due to internet technology limitation
(Google hadn't indexed Usenet yet). Yet still a good document with many of the details perfectly intact.
-
-With all the talk and theorizing going on about Free Software development models, I thought that it might be
a good idea to actually give an example. I've tried to keep it as accurate as possible, and hope my
experiences working on this team can benefit other projects as well.
-
-Like current GIMP development, this was not done alone. This is a compilation of knowledge from a lot of
people on #gimp, some of it predating my own experience. This history would not have been possible without,
specifically, the help of josh, Raph, Adrian, Xach, yosh, and more generally all of the guys on #gimp. This
is NOT inclusive - there are many sites and people that continue to contribute to the success of GIMP that
are not listed here. I suggest visiting [http://www.gimp.org/](//www.gimp.org/) for a more complete listing
of gimp links.
-
--- [Seth Burgess](mailto:sjburges ou edu)
-
-### In the beginning:
-
-A couple of students at Berkeley, Spencer Kimball and Peter Mattis, decided they wanted to write an image
manipulation program rather than write a compiler in scheme/lisp for professor Fateman (CS164). Neither one
had graphic arts experience, but it seemed like a neat project. They got encouragement from professor
Forsythe to implement some new features too - rumor has it intelligent scissors was Spencer's CS280 project.
Thus Spencer and Peter begat the General Image Manipulation Program, or GIMP for short. They worked on it for
a quite awhile before letting it anyone else have a crack at it - probably about 9-10 months by current
estimates. By their first public release, they had a functional product.
-
-GIMP had a lot of neat stuff attached to its first public release, version 0.54 (January 1996). It had a
plug-in system, so developers could make separate programs to add to GIMP without breaking anything in the
main distribution. It had some basic tools to do drawing, and channel operations. It had an undo feature the
likes of which was not found in any known image manipulation program. It had loyal users swearing by it. It
was protected by the GPL. And it had a cool name.
-
-But all was not well with GIMP. It had rather frequent crashes, that could be caused by plug-ins or problems
in the main code. It had a dependency on Motif for its GUI toolkit, which made efficient distribution to a
lot of users impossible. This restriction also alienated a lot of would-be plug-in development. And GIMP had
people making absurd claims that it was already more stable than Photoshop.
-
-So like a lot of projects, there was a rather humble beginning to a project that gathered a lot of support
from the user community. Its beginnings were almost entirely self-contained. They didn't announce grandiose
plans for vaporware - Spencer and Peter delivered a product that did something. It was not perfect, but it
was an amazing feat for two college programmers without any outside influence.
-
-### Enter the Users:
-
-One of the first steps after the 0.54 release was to create a mailing list for developers. This probably
sprung out of the fact that Peter and Spencer wanted feedback on their new program, and a mailing list was a
convenient way for people to do this. It was also a method of letting people know about what was still going
on with development easily and efficiently. Whatever the reasons behind the first mailing list, it enabled
people with similar interests to communicate on the project.
-
-Mail was rather heavy on the list, but not all of the questions seemed really appropriate to ask the
developers. Their experience was not in how to use image multiplication effectively, but rather to manipulate
pointers and data structures. On July 5th, 1996, gimp-list split into gimp-user and gimp-developer.
-
-Also shortly after its introduction, web sites started appearing. There was of course the main gimp site
located at Berkeley, but what differentiated this program from many others is that a lot of sites sprung up
on how to use the program.
-
-GIMP users, such as Zach Beane (Xach), started making tutorials for GIMP. Zach's page, for awhile, featured
a new date created with gimp per day. Others followed suite, showing off artwork done and sharing techniques.
It was clear that if you wanted to make something with GIMP, there were sites to help you get a jump start.
-
-Federico Mena Quintero, also known as Quartic, authored a page pointing to all known GIMP resources. His
page because a focal point for new plug-in announcements and featured some pretty snazzy artwork too. He also
showcased his own plug-ins.
-
-Larry Ewing got GIMP some early publicity by creating his now famous Linux Penguin (some call him Tux), in
GIMP 0.54\. He put a [web page](http://www.isc.tamu.edu/~lewing/gimp) up showing some of the steps he took to
do it. This was probably the first huge exposure GIMP received.
-
-### A New Toolkit - The 0.60 Series:
-
-Peter got really fed up with Motif. So he decided to write his own. He called them gtk and gdk, for the Gimp
Tool Kit, and the Gimp Drawing Kit. Peter tells us now that they never intended for it to become a general
purpose toolkit - they just wanted something to use with GIMP, and it "seemed like a good idea at the time".
A name change also occurred; The General Image Manipulation Program became the GNU Image Manipulation Program.
-
-Development was experimental and incomplete in the 0.6x series. The plug-ins were not compatible with the
large base of plug-ins developed for the 0.54 series. Authors were slow to update their plug-ins to use the
new protocols. People did not want to write documentation for 0.60, because the features were in such a state
of flux.
-
-Generally speaking, the 0.6x series was less usable than the previous 0.54 series. The crashes were more
random, and more frequent. Only people interested in moving the project forward even downloaded the 0.6x
series - so little user input added to the mix. Grand plans for using layers, tiled memory, a built in
scripting ability, and a really neat transform tool were shown as teasers on the Berkeley web page, but
people most people rather have used a program that worked to get things done (and to write plug-ins for).
-
-The 0.60 series of snapshots was a developers chance to add features. If it was coded, and it worked, it
could make it in. A underlying push for stability began near the end of it, but getting cool stuff into it
was the first objective. This could be summed up by Andreas Dilger best:
-
-_"It's good to see that the next version of GIMP is here.
- Let the enhancing begin!"_
-
-### The 0.99 Series - The Long Road to 1.0:
-
-On Feb 26, 1997, Spencer and Peter(S&P) released version 0.99\. The main goals were to port plug-ins to the
tile based memory scheme and new API, which wasn't done on a large scale for the 0.60 snapshots. There was a
new version of gtk/gdk, called GTK+. It incorporated massive changes to the previous model of gtk.
-
-Sequential releases occurred up until 0.99.9, at a brisk rate. At 0.99.9, there was a long gap between
releases - this was filled by Trent Jarvi offering a diff of all the current small diffs floating around for
0.99.9 updated fairly frequently. S&P managed to release a new GTK+ and a GIMP 0.99.10 eventually on June
9th, 1997\. It would be their last release.
-
-S&P graduated, got real jobs, and didn't have the time to put into the project anymore. There was no defined
successor to S&P, and they neglected to tell anyone they were leaving.
-
-### The Pre-11 Releases:
-
-Spencer and Peter had now left, without saying goodbye, but this did little to stop the now-rabid users;
several unofficial pre-releases were made while not a sound was heard from Spencer or Peter. It became such a
problem to keep track of patches, that the pre-11 releases were made. These were handled by Matt Hawkins, and
helped us mere mortals cope until someone took the center stage again.
-
-Federico Mena Quintero (Quartic) picked up the releases for awhile, Under his guidance, a movement towards
stability and a usable product became the primary objective. On release 0.99.14, Quartic announced a feature
freeze - no new features until 1.0\. Some interesting features, some of which are already largely coded, have
been kept out to move towards a stable release.
-
-Quartic kept GIMP going, until he was pulled away on other (related) projects. However, no serious gap
happened between Quartic's tenure and what came to replace it.
-
-### A New Communication:
-
-Mailing lists are nice, when they work. Web pages are great for giving tips and presenting data. But nothing
can compare with real-time conferencing for open discussion and brainstorming. It also works really well for
bug hunting. To achieve this, GIMP used its own irc channel, #gimp. #gimp was born sometime near February
1997.
-
-To be fair, #gimp is not always about squashing bugs or future GIMP plans. But overall its become a very
competent technical support for gimp users and a spot for developers to get encouragement and help from one
another. When I asked a couple weeks ago if GIMP would be where it is without #gimp, I got responses ranging
from 'probably not' to 'no'. It has allowed people to talk about what is really needed, and what activities
they could be involved in that would really help the project.
-
-### A New Development Model:
-
-With project leaders Spencer and Peter, and now Quartic, gone, and GIMP now split into the development of
the toolkit and the development of the program, it was time for new leaders to come to the foreground. Right?
Thats what the bazaar model would indicate. However, as with any model, there are situations that just aren't
covered...
-
-In the new system, there are designated team members; Manish Singh (yosh), for example, was in charge of
making releases. Adrian Likins, maintaining data. Larry Ewing (lewing), Matthew Wilson (msw), and a host of
others made bug fixes, and did other messier stuff. There's also a lot of overlap between the developer
community of GIMP and other related projects. But they work as a team - nobody was, or is, the project
leader. Each person makes their own contributions, and we all know who to refer to when we don't know how to
do something, or want advice or options. Decisions that control the fate of GIMP are made primarily on #gimp,
through this team effort.
-
-### Differentiation:
-
-In the past year or so, several very specific sites have sprung up that are meant to cater to a particular
crowd of the GIMP user and developer base.
-
-On April 13th, 1997, <http://xach.dorknet.com/gimp/news/>, GIMP News was born. Zach headed this effort. This
site aimed to become a site to check daily if you wanted to stay on the bleeding edge of GIMP development. If
you made a plug-in, Zach found out and told the world about it. If a new release was made, it often beat the
mailing list in getting the news to you. His tutorials and a bug report form (added later) were linked off of
the news page.
-
-At about the same time, a huge help in keeping track of the large quantity of plug-ins and planned plug-ins
appeared on the horizon. The [GIMP Plug-In Registry](http://registry.gimp.org/) allows authors to update
their plug-ins, and people to register their plans for future plug-ins. If you are a plug-in author, you
register it here; it stays up-to-date this way, and as a user you can download and compile the newest
plug-ins that are not included in the distribution selectively. There's even a 'shopping list' that will tar
up the ones you want and send them all at once.
-
-In Late May 1997, I started GIMP Bugs. This took many of the bugs from developers list which tended to get
in the way of discussion, and organized them into an easy-to-read chart for perusal by the developers. I
maintained the list "by hand", but with only a bug report or two a day, it was not a big challenge to handle
with a couple perl scripts. I assigned priorities to bugs, so that different levels or specialties of
developers could concentrate on different bugs. I also checked each bug against my own GIMP, and tried to
clarify the report. This became an electronic checklist of things that had to be done, that was updated by
yours truly on a frequent basis.
-
-An often overlooked and under-valued aspect of an major project is that of documentation. We have made do
with small tutorials here and there until we got something much better, quite by surprise. On October 7th,
1997, two users, Karin Kylander and Olof S., announced the
<http://www.dtek.chalmers.se/~d95olofs/manual/gimpmana.html> Gimp Users Manual.
-
-It is now a comprehensive listing of each bit of functionality in Gimp. This 200+ page monster represents a
huge amount of work, and is an invaluable asset to anyone trying to figure out a particular tool. These users
became true experts with the tools, possibly better than any single developer. They gathered knowledge from
anyone they could. They then chose to share that knowledge with the world. It should be noted that a huge
majority of this work was done on their own, well before any outside help or organization even knew of its
existence. **update** Recent reports have the GUM coming in at 600+ pages!
-
-### A Different Release Model:
-
-Because developers are impatient types, they don't want to wait around until the next release to tinker with
changing source code. CVS is the solution that GIMP uses. This versioning system allows users and developers
alike to download the bleeding edge GIMP, and developers to commit changes. Further, it allows for easy
removal of changes - every change is logged, and can be reversed. While there have been some server
difficulties with CVS, it has caught several bugs prior to another beta release. Its certainly better than
trying to deal with the numerous received patches by hand.
-
-### Commercial Involvement:
-
-Contrary to most free software projects, there is a distinct commercial involvement in GIMP. Some GIMP
developers (and possibly others) saw a chance for a profit in customizing the code or writing custom plug-ins
for commercial sale. They also want to sell CD-ROMs of the 1.0 release of GIMP, loaded with related artwork
and programs.
-
-To this end, <http://www.wilberworks.com>WilberWorks is was formed. Several GIMP developers and "support
staff" now have a small amount of supplemental income for their work on the project, working as contractors -
enough for a beer every now and then, but not enough to call it a living.
-
-Contrary to popular belief, this has not hurt GIMP development at all. All work done on GIMP is still GPL.
The money is not the main motivator for the work. It is simply a little something that WilberWorks can say
'Thank You' with.
-
-WilberWorks has put me out of the bug page business - they have set up a superior bug tracking system on
their server. WilberWorks 'staff' can log onto the web site, and respond to bugs. Multiple reports can be
modified in the database simultaneously. Bugs are not forgotten on this system - after they are closed, they
stay around. Users can (though rarely do it seems) log on as a guest and browse through the previous reports
and replies.
-
-It is currently WilberWorks policy to reply to all bug reports that aren't obviously junk mail or invalid
email addresses. This extra little effort can often uncover a detail that may prove critical to resolving the
issue. WilberWorks has transformed my little bugs page into a support page.
-
-Obviously, WilberWorks exists to make money. So why a bug tracking system? The answer is simple - it will
make money and costs it nothing. In addition to making a better end product for
<http://www.wilberworks.comproducts.html>pressing onto CD-ROMs, they offer to fix any bug in 10 days if you
have a support contract. Because they have developers with intimate knowledge of the system and a great deal
of skill, WilberWorks feels that it can make this offer. You will be hard-pressed to find a major commercial
application that can offer anything similar.
-
-### Centralization:
-
-In response to a need for a central repository for all these aspects of the program, Shawn Amundson
(Snorfle) secured the domain "gimp.org". The main server of this is [www.gimp.org](//www.gimp.org), which
just about anyone should be able to guess and remember. Started on October 7th, 1997, it contains a broad
overview of things to get you going with gimp, from the source to to tips and tricks.
-
-### Publicity:
-
-Michael J. Hammel wrote a four part series on GIMP for inclusion in [Linux
Journal](http://www.linuxjournal.com/) (October 1997 - January 1998). It went through some basics, but in
reality barely skimmed the surface. But still, this well written and accurate set of articles exposed the
Linux community (and anyone who reads linux community literature) to GIMP. GIMP also receives publicity on a
regular basis from his [Graphics Muse](http://www.graphics-muse.org) article appearing in the [Linux
Gazette](http://www.ssc.com/lg/).
-
-[Red Hat Linux](http://www.redhat.com) has bundled GIMP in its distribution since version 5.0\. This has
turned out to be something of a double edged sword - while it exposes the world to GIMP, it uses a now
ancient version. If you are using version 0.99.12 that comes with RedHat 5.0, please
[upgrade!](ftp://s9412a.steinan.ntnu.no/pub/gimp/) Many improvements to the libraries, program, and plug-ins
have taken place since 0.99.12.
-
-[www.gimp.org](//www.gimp.org/) also uses the GIMP mascot, Wilber. Wilber is cool. Wilber's eyes move, and
thats kinda disturbing to some people, but I like him. Wilber is a GIMP. Created on Sept. 25, 1997 by Tuomas
Kuosmanen, Wilber has taken on a life of its own. For example, Wilber is pictured doing all sorts of stuff at
the top left hand corner of the page at www.gimp.org (_edit: the old web site now lives at
[classic.gimp.org](http://classic.gimp.org/)_). Wilber has become a recognized icon associated with GIMP, and
may be seen at [slashdot](http://slashdot.org) whenever GIMP is mentioned. He appears on the help screen when
starting GIMP for the first time, offering useful advice. Now that GIMP is becoming more ready to be seen by
the general public, Wilber is helping get GIMP out to the masses much like (the penguin some call) Tux is for
Linux.
-
-### And It Goes On:
-
-Remember GTK+? Some developers got the crazy idea that it was a great toolkit and should be used in
everything. And we can create a desktop based on the toolkit. Like many crazy ideas, this is becoming a
reality. The GNOME project is well underway, in the alpha stages. The GNOME project is being aggressively
supported by [Red Hat Labs](http://www.labs.redhat.com). All of this may be seen as a byproduct of GIMP. The
success of this one project has spawned many.
-
-On June 5th, 1998, at 17:17 CST, GIMP 1.0 was released. Great plans for the future are forming now!
+Title: A Brief (and Ancient) History of GIMP
+Date: 2015-07-29T14:40:35-05:00
+Modified: 2015-07-29T14:40:43-05:00
+Author: Pat David
+Summary:
+
+
+## A Brief History of GIMP
+
+> _Editor's note:_ This history was written around the release of GIMP 1.0 in 1998 and has actually become a
historical document all on its own. Some of the dates are not accurate (due to internet technology limitation
(Google hadn't indexed Usenet yet). Yet still a good document with many of the details perfectly intact.
+
+With all the talk and theorizing going on about Free Software development models, I thought that it might be
a good idea to actually give an example. I've tried to keep it as accurate as possible, and hope my
experiences working on this team can benefit other projects as well.
+
+Like current GIMP development, this was not done alone. This is a compilation of knowledge from a lot of
people on #gimp, some of it predating my own experience. This history would not have been possible without,
specifically, the help of josh, Raph, Adrian, Xach, yosh, and more generally all of the guys on #gimp. This
is NOT inclusive - there are many sites and people that continue to contribute to the success of GIMP that
are not listed here. I suggest visiting [http://www.gimp.org/](//www.gimp.org/) for a more complete listing
of gimp links.
+
+-- [Seth Burgess](mailto:sjburges ou edu)
+
+### In the beginning:
+
+A couple of students at Berkeley, Spencer Kimball and Peter Mattis, decided they wanted to write an image
manipulation program rather than write a compiler in scheme/lisp for professor Fateman (CS164). Neither one
had graphic arts experience, but it seemed like a neat project. They got encouragement from professor
Forsythe to implement some new features too - rumor has it intelligent scissors was Spencer's CS280 project.
Thus Spencer and Peter begat the General Image Manipulation Program, or GIMP for short. They worked on it for
a quite awhile before letting it anyone else have a crack at it - probably about 9-10 months by current
estimates. By their first public release, they had a functional product.
+
+GIMP had a lot of neat stuff attached to its first public release, version 0.54 (January 1996). It had a
plug-in system, so developers could make separate programs to add to GIMP without breaking anything in the
main distribution. It had some basic tools to do drawing, and channel operations. It had an undo feature the
likes of which was not found in any known image manipulation program. It had loyal users swearing by it. It
was protected by the GPL. And it had a cool name.
+
+But all was not well with GIMP. It had rather frequent crashes, that could be caused by plug-ins or problems
in the main code. It had a dependency on Motif for its GUI toolkit, which made efficient distribution to a
lot of users impossible. This restriction also alienated a lot of would-be plug-in development. And GIMP had
people making absurd claims that it was already more stable than Photoshop.
+
+So like a lot of projects, there was a rather humble beginning to a project that gathered a lot of support
from the user community. Its beginnings were almost entirely self-contained. They didn't announce grandiose
plans for vaporware - Spencer and Peter delivered a product that did something. It was not perfect, but it
was an amazing feat for two college programmers without any outside influence.
+
+### Enter the Users:
+
+One of the first steps after the 0.54 release was to create a mailing list for developers. This probably
sprung out of the fact that Peter and Spencer wanted feedback on their new program, and a mailing list was a
convenient way for people to do this. It was also a method of letting people know about what was still going
on with development easily and efficiently. Whatever the reasons behind the first mailing list, it enabled
people with similar interests to communicate on the project.
+
+Mail was rather heavy on the list, but not all of the questions seemed really appropriate to ask the
developers. Their experience was not in how to use image multiplication effectively, but rather to manipulate
pointers and data structures. On July 5th, 1996, gimp-list split into gimp-user and gimp-developer.
+
+Also shortly after its introduction, web sites started appearing. There was of course the main gimp site
located at Berkeley, but what differentiated this program from many others is that a lot of sites sprung up
on how to use the program.
+
+GIMP users, such as Zach Beane (Xach), started making tutorials for GIMP. Zach's page, for awhile, featured
a new date created with gimp per day. Others followed suite, showing off artwork done and sharing techniques.
It was clear that if you wanted to make something with GIMP, there were sites to help you get a jump start.
+
+Federico Mena Quintero, also known as Quartic, authored a page pointing to all known GIMP resources. His
page because a focal point for new plug-in announcements and featured some pretty snazzy artwork too. He also
showcased his own plug-ins.
+
+Larry Ewing got GIMP some early publicity by creating his now famous Linux Penguin (some call him Tux), in
GIMP 0.54\. He put a [web page](http://www.isc.tamu.edu/~lewing/gimp) up showing some of the steps he took to
do it. This was probably the first huge exposure GIMP received.
+
+### A New Toolkit - The 0.60 Series:
+
+Peter got really fed up with Motif. So he decided to write his own. He called them gtk and gdk, for the Gimp
Tool Kit, and the Gimp Drawing Kit. Peter tells us now that they never intended for it to become a general
purpose toolkit - they just wanted something to use with GIMP, and it "seemed like a good idea at the time".
A name change also occurred; The General Image Manipulation Program became the GNU Image Manipulation Program.
+
+Development was experimental and incomplete in the 0.6x series. The plug-ins were not compatible with the
large base of plug-ins developed for the 0.54 series. Authors were slow to update their plug-ins to use the
new protocols. People did not want to write documentation for 0.60, because the features were in such a state
of flux.
+
+Generally speaking, the 0.6x series was less usable than the previous 0.54 series. The crashes were more
random, and more frequent. Only people interested in moving the project forward even downloaded the 0.6x
series - so little user input added to the mix. Grand plans for using layers, tiled memory, a built in
scripting ability, and a really neat transform tool were shown as teasers on the Berkeley web page, but
people most people rather have used a program that worked to get things done (and to write plug-ins for).
+
+The 0.60 series of snapshots was a developers chance to add features. If it was coded, and it worked, it
could make it in. A underlying push for stability began near the end of it, but getting cool stuff into it
was the first objective. This could be summed up by Andreas Dilger best:
+
+_"It's good to see that the next version of GIMP is here.
+ Let the enhancing begin!"_
+
+### The 0.99 Series - The Long Road to 1.0:
+
+On Feb 26, 1997, Spencer and Peter(S&P) released version 0.99\. The main goals were to port plug-ins to the
tile based memory scheme and new API, which wasn't done on a large scale for the 0.60 snapshots. There was a
new version of gtk/gdk, called GTK+. It incorporated massive changes to the previous model of gtk.
+
+Sequential releases occurred up until 0.99.9, at a brisk rate. At 0.99.9, there was a long gap between
releases - this was filled by Trent Jarvi offering a diff of all the current small diffs floating around for
0.99.9 updated fairly frequently. S&P managed to release a new GTK+ and a GIMP 0.99.10 eventually on June
9th, 1997\. It would be their last release.
+
+S&P graduated, got real jobs, and didn't have the time to put into the project anymore. There was no defined
successor to S&P, and they neglected to tell anyone they were leaving.
+
+### The Pre-11 Releases:
+
+Spencer and Peter had now left, without saying goodbye, but this did little to stop the now-rabid users;
several unofficial pre-releases were made while not a sound was heard from Spencer or Peter. It became such a
problem to keep track of patches, that the pre-11 releases were made. These were handled by Matt Hawkins, and
helped us mere mortals cope until someone took the center stage again.
+
+Federico Mena Quintero (Quartic) picked up the releases for awhile, Under his guidance, a movement towards
stability and a usable product became the primary objective. On release 0.99.14, Quartic announced a feature
freeze - no new features until 1.0\. Some interesting features, some of which are already largely coded, have
been kept out to move towards a stable release.
+
+Quartic kept GIMP going, until he was pulled away on other (related) projects. However, no serious gap
happened between Quartic's tenure and what came to replace it.
+
+### A New Communication:
+
+Mailing lists are nice, when they work. Web pages are great for giving tips and presenting data. But nothing
can compare with real-time conferencing for open discussion and brainstorming. It also works really well for
bug hunting. To achieve this, GIMP used its own irc channel, #gimp. #gimp was born sometime near February
1997.
+
+To be fair, #gimp is not always about squashing bugs or future GIMP plans. But overall its become a very
competent technical support for gimp users and a spot for developers to get encouragement and help from one
another. When I asked a couple weeks ago if GIMP would be where it is without #gimp, I got responses ranging
from 'probably not' to 'no'. It has allowed people to talk about what is really needed, and what activities
they could be involved in that would really help the project.
+
+### A New Development Model:
+
+With project leaders Spencer and Peter, and now Quartic, gone, and GIMP now split into the development of
the toolkit and the development of the program, it was time for new leaders to come to the foreground. Right?
Thats what the bazaar model would indicate. However, as with any model, there are situations that just aren't
covered...
+
+In the new system, there are designated team members; Manish Singh (yosh), for example, was in charge of
making releases. Adrian Likins, maintaining data. Larry Ewing (lewing), Matthew Wilson (msw), and a host of
others made bug fixes, and did other messier stuff. There's also a lot of overlap between the developer
community of GIMP and other related projects. But they work as a team - nobody was, or is, the project
leader. Each person makes their own contributions, and we all know who to refer to when we don't know how to
do something, or want advice or options. Decisions that control the fate of GIMP are made primarily on #gimp,
through this team effort.
+
+### Differentiation:
+
+In the past year or so, several very specific sites have sprung up that are meant to cater to a particular
crowd of the GIMP user and developer base.
+
+On April 13th, 1997, <http://xach.dorknet.com/gimp/news/>, GIMP News was born. Zach headed this effort. This
site aimed to become a site to check daily if you wanted to stay on the bleeding edge of GIMP development. If
you made a plug-in, Zach found out and told the world about it. If a new release was made, it often beat the
mailing list in getting the news to you. His tutorials and a bug report form (added later) were linked off of
the news page.
+
+At about the same time, a huge help in keeping track of the large quantity of plug-ins and planned plug-ins
appeared on the horizon. The [GIMP Plug-In Registry](http://registry.gimp.org/) allows authors to update
their plug-ins, and people to register their plans for future plug-ins. If you are a plug-in author, you
register it here; it stays up-to-date this way, and as a user you can download and compile the newest
plug-ins that are not included in the distribution selectively. There's even a 'shopping list' that will tar
up the ones you want and send them all at once.
+
+In Late May 1997, I started GIMP Bugs. This took many of the bugs from developers list which tended to get
in the way of discussion, and organized them into an easy-to-read chart for perusal by the developers. I
maintained the list "by hand", but with only a bug report or two a day, it was not a big challenge to handle
with a couple perl scripts. I assigned priorities to bugs, so that different levels or specialties of
developers could concentrate on different bugs. I also checked each bug against my own GIMP, and tried to
clarify the report. This became an electronic checklist of things that had to be done, that was updated by
yours truly on a frequent basis.
+
+An often overlooked and under-valued aspect of an major project is that of documentation. We have made do
with small tutorials here and there until we got something much better, quite by surprise. On October 7th,
1997, two users, Karin Kylander and Olof S., announced the
<http://www.dtek.chalmers.se/~d95olofs/manual/gimpmana.html> Gimp Users Manual.
+
+It is now a comprehensive listing of each bit of functionality in Gimp. This 200+ page monster represents a
huge amount of work, and is an invaluable asset to anyone trying to figure out a particular tool. These users
became true experts with the tools, possibly better than any single developer. They gathered knowledge from
anyone they could. They then chose to share that knowledge with the world. It should be noted that a huge
majority of this work was done on their own, well before any outside help or organization even knew of its
existence. **update** Recent reports have the GUM coming in at 600+ pages!
+
+### A Different Release Model:
+
+Because developers are impatient types, they don't want to wait around until the next release to tinker with
changing source code. CVS is the solution that GIMP uses. This versioning system allows users and developers
alike to download the bleeding edge GIMP, and developers to commit changes. Further, it allows for easy
removal of changes - every change is logged, and can be reversed. While there have been some server
difficulties with CVS, it has caught several bugs prior to another beta release. Its certainly better than
trying to deal with the numerous received patches by hand.
+
+### Commercial Involvement:
+
+Contrary to most free software projects, there is a distinct commercial involvement in GIMP. Some GIMP
developers (and possibly others) saw a chance for a profit in customizing the code or writing custom plug-ins
for commercial sale. They also want to sell CD-ROMs of the 1.0 release of GIMP, loaded with related artwork
and programs.
+
+To this end, <http://www.wilberworks.com>WilberWorks is was formed. Several GIMP developers and "support
staff" now have a small amount of supplemental income for their work on the project, working as contractors -
enough for a beer every now and then, but not enough to call it a living.
+
+Contrary to popular belief, this has not hurt GIMP development at all. All work done on GIMP is still GPL.
The money is not the main motivator for the work. It is simply a little something that WilberWorks can say
'Thank You' with.
+
+WilberWorks has put me out of the bug page business - they have set up a superior bug tracking system on
their server. WilberWorks 'staff' can log onto the web site, and respond to bugs. Multiple reports can be
modified in the database simultaneously. Bugs are not forgotten on this system - after they are closed, they
stay around. Users can (though rarely do it seems) log on as a guest and browse through the previous reports
and replies.
+
+It is currently WilberWorks policy to reply to all bug reports that aren't obviously junk mail or invalid
email addresses. This extra little effort can often uncover a detail that may prove critical to resolving the
issue. WilberWorks has transformed my little bugs page into a support page.
+
+Obviously, WilberWorks exists to make money. So why a bug tracking system? The answer is simple - it will
make money and costs it nothing. In addition to making a better end product for
<http://www.wilberworks.comproducts.html>pressing onto CD-ROMs, they offer to fix any bug in 10 days if you
have a support contract. Because they have developers with intimate knowledge of the system and a great deal
of skill, WilberWorks feels that it can make this offer. You will be hard-pressed to find a major commercial
application that can offer anything similar.
+
+### Centralization:
+
+In response to a need for a central repository for all these aspects of the program, Shawn Amundson
(Snorfle) secured the domain "gimp.org". The main server of this is [www.gimp.org](//www.gimp.org), which
just about anyone should be able to guess and remember. Started on October 7th, 1997, it contains a broad
overview of things to get you going with gimp, from the source to to tips and tricks.
+
+### Publicity:
+
+Michael J. Hammel wrote a four part series on GIMP for inclusion in [Linux
Journal](http://www.linuxjournal.com/) (October 1997 - January 1998). It went through some basics, but in
reality barely skimmed the surface. But still, this well written and accurate set of articles exposed the
Linux community (and anyone who reads linux community literature) to GIMP. GIMP also receives publicity on a
regular basis from his [Graphics Muse](http://www.graphics-muse.org) article appearing in the [Linux
Gazette](http://www.ssc.com/lg/).
+
+[Red Hat Linux](http://www.redhat.com) has bundled GIMP in its distribution since version 5.0\. This has
turned out to be something of a double edged sword - while it exposes the world to GIMP, it uses a now
ancient version. If you are using version 0.99.12 that comes with RedHat 5.0, please
[upgrade!](ftp://s9412a.steinan.ntnu.no/pub/gimp/) Many improvements to the libraries, program, and plug-ins
have taken place since 0.99.12.
+
+[www.gimp.org](//www.gimp.org/) also uses the GIMP mascot, Wilber. Wilber is cool. Wilber's eyes move, and
thats kinda disturbing to some people, but I like him. Wilber is a GIMP. Created on Sept. 25, 1997 by Tuomas
Kuosmanen, Wilber has taken on a life of its own. For example, Wilber is pictured doing all sorts of stuff at
the top left hand corner of the page at www.gimp.org (_edit: the old web site now lives at
[classic.gimp.org](http://classic.gimp.org/)_). Wilber has become a recognized icon associated with GIMP, and
may be seen at [slashdot](http://slashdot.org) whenever GIMP is mentioned. He appears on the help screen when
starting GIMP for the first time, offering useful advice. Now that GIMP is becoming more ready to be seen by
the general public, Wilber is helping get GIMP out to the masses much like (the penguin some call) Tux is for
Linux.
+
+### And It Goes On:
+
+Remember GTK+? Some developers got the crazy idea that it was a great toolkit and should be used in
everything. And we can create a desktop based on the toolkit. Like many crazy ideas, this is becoming a
reality. The GNOME project is well underway, in the alpha stages. The GNOME project is being aggressively
supported by [Red Hat Labs](http://www.labs.redhat.com). All of this may be seen as a byproduct of GIMP. The
success of this one project has spawned many.
+
+On June 5th, 1998, at 17:17 CST, GIMP 1.0 was released. Great plans for the future are forming now!
diff --git a/content/about/meta/frontpage.md b/content/about/meta/frontpage.md
index 5bfc078..e2bcf71 100644
--- a/content/about/meta/frontpage.md
+++ b/content/about/meta/frontpage.md
@@ -1,127 +1,127 @@
-Title: Editing the Front Page
-Date: 2015-08-20T09:42:26-05:00
-Author: Pat David
-Summary: How to edit the main landing page of the site.
-
-So you'd like to modify the main landing page of this site?
-Check with someone first.
-Seriously. Get on [irc]({filename}../../about/irc.md), and get someone to get support for what you want to
do.
-
-
-The reason I say this is that it's likely going to be a bit of work, and I'd hate for you
-to get too far down the rabbit hole before finding out it may not be something that will be implemented.
-
-Ok, still on track to fiddle with the front page? Read on! Or just jump straight to the [tl;dr](#tldr).
-
-If you're in a rush or just need a reminder, to edit the front page modify this file:
-
- /themes/newgimp/templates/home.html
-
-
-
-## The Front Page
-
-The way that [Pelican] is normally handling the front page of a site is to consider it a listing of
-blog posts. This means that a normal "front page" for a Pelican site usually has a list of all of the
-*Article* posts on the site.
-
-This is not what we're doing here.
-
-We still want a listing of *Article* posts, but in a different location than the front page
-(I will be referring to the Pelican idea of *Article* as *News* items from now on).
-Really, we want a (*relatively*) static front page, and we'd like to move the list of news items
-to it's own page (and each news item gets it's own permalink as well).
-
-So, the default way this works in Pelican is that the main front page for the site is auto-generated
-from a template file:
-
- themes/themename/templates/index.html
-
-
-### Modifying Default Behavior
-
-We only need to modify two things to get the behavior we want.
-From a high-level perspective:
-
-1. Move the current news-indexed main page to a different location
-2. Put a new static page at the old location (gimp.org/index.html).
-
-
-#### Move old index.html to new location
-
-We want the auto-generated page that indexes all of the *News* items to live in a different location.
-Preferably, at: `www.gimp.org/news/index.html`.
-This way, getting a list of the latest news can be found at the url: `www.gimp.org/news/`.
-
-This is accomplished through a setting in `pelicanconf.py`:
-
- INDEX_SAVE_AS = "/news/index.html"
-
-This setting will redirect what *was* the front page to a new location `/news/index.html`.
-Note that the template to produce this page is still the `/themes/themename/tempates/index.html` file,
-all we've done is redirected it's output to a new location.
-
-
-#### Create new index.html
-
-With the old front page redirected to a new location, we now need a new file to replace it.
-This only requires that we create a new index file and give it an explicit override for some metadata.
-
-I created a new folder just for this one file, `/content/frontpage/`.
-In that folder, there is a file, `index.md` whose contents look like this:
-
- Title: GIMP
- Date: 2015-08-20T10:23:31-05:00
- URL:
- save_as: index.html
- Template: home
-
-This is only a placeholder file to trigger the use of a new template.
-It has two important pieces of metadata to get this behavior:
-
- save_as: index.html
-
-Tells Pelican to save this file as the new main page, `gimp.org/index.html`.
-
- Template: home
-
-This tells Pelican to use a custom template for this page, called "home", which is located here:
-
- themes/themename/templates/home.html
-
-**Which**, *finally* gives us the file you'll need to modify to change the front page!
-
-### TL;DR
-
-To modify the front page, modify the file located at `/themes/themename/templates/home.html`.
-
-
-
-## Editing Notes
-
-In Pelican, all template will receive some [common
variables](http://docs.getpelican.com/en/3.6.2/themes.html#common-variables) for parsing. Something that we
may want to include for example is the latest news post.
-
-This can be accessed in the template through the `article` variable. For instance, some common properties
(from the most recent news post):
-
- articles[0].title
- articles[0].url
- articles[0].summary
- articles[0].author
- articles[0].date
-
-The way it might actually be used in the template:
-
- <h3>Articles Object</h3>
- <div>
- <a href="{{ articles[0].url }}">{{ articles[0].title }}</a>
- </div>
- <div>
- {{ articles[0].summary }}
- </div>
- <div>
- {{ articles[0].author }}
- </div>
- <div>
- {{ articles[0].date }}
- </div>
-
+Title: Editing the Front Page
+Date: 2015-08-20T09:42:26-05:00
+Author: Pat David
+Summary: How to edit the main landing page of the site.
+
+So you'd like to modify the main landing page of this site?
+Check with someone first.
+Seriously. Get on [irc]({filename}../../about/irc.md), and get someone to get support for what you want to
do.
+
+
+The reason I say this is that it's likely going to be a bit of work, and I'd hate for you
+to get too far down the rabbit hole before finding out it may not be something that will be implemented.
+
+Ok, still on track to fiddle with the front page? Read on! Or just jump straight to the [tl;dr](#tldr).
+
+If you're in a rush or just need a reminder, to edit the front page modify this file:
+
+ /themes/newgimp/templates/home.html
+
+
+
+## The Front Page
+
+The way that [Pelican] is normally handling the front page of a site is to consider it a listing of
+blog posts. This means that a normal "front page" for a Pelican site usually has a list of all of the
+*Article* posts on the site.
+
+This is not what we're doing here.
+
+We still want a listing of *Article* posts, but in a different location than the front page
+(I will be referring to the Pelican idea of *Article* as *News* items from now on).
+Really, we want a (*relatively*) static front page, and we'd like to move the list of news items
+to it's own page (and each news item gets it's own permalink as well).
+
+So, the default way this works in Pelican is that the main front page for the site is auto-generated
+from a template file:
+
+ themes/themename/templates/index.html
+
+
+### Modifying Default Behavior
+
+We only need to modify two things to get the behavior we want.
+From a high-level perspective:
+
+1. Move the current news-indexed main page to a different location
+2. Put a new static page at the old location (gimp.org/index.html).
+
+
+#### Move old index.html to new location
+
+We want the auto-generated page that indexes all of the *News* items to live in a different location.
+Preferably, at: `www.gimp.org/news/index.html`.
+This way, getting a list of the latest news can be found at the url: `www.gimp.org/news/`.
+
+This is accomplished through a setting in `pelicanconf.py`:
+
+ INDEX_SAVE_AS = "/news/index.html"
+
+This setting will redirect what *was* the front page to a new location `/news/index.html`.
+Note that the template to produce this page is still the `/themes/themename/tempates/index.html` file,
+all we've done is redirected it's output to a new location.
+
+
+#### Create new index.html
+
+With the old front page redirected to a new location, we now need a new file to replace it.
+This only requires that we create a new index file and give it an explicit override for some metadata.
+
+I created a new folder just for this one file, `/content/frontpage/`.
+In that folder, there is a file, `index.md` whose contents look like this:
+
+ Title: GIMP
+ Date: 2015-08-20T10:23:31-05:00
+ URL:
+ save_as: index.html
+ Template: home
+
+This is only a placeholder file to trigger the use of a new template.
+It has two important pieces of metadata to get this behavior:
+
+ save_as: index.html
+
+Tells Pelican to save this file as the new main page, `gimp.org/index.html`.
+
+ Template: home
+
+This tells Pelican to use a custom template for this page, called "home", which is located here:
+
+ themes/themename/templates/home.html
+
+**Which**, *finally* gives us the file you'll need to modify to change the front page!
+
+### TL;DR
+
+To modify the front page, modify the file located at `/themes/themename/templates/home.html`.
+
+
+
+## Editing Notes
+
+In Pelican, all template will receive some [common
variables](http://docs.getpelican.com/en/3.6.2/themes.html#common-variables) for parsing. Something that we
may want to include for example is the latest news post.
+
+This can be accessed in the template through the `article` variable. For instance, some common properties
(from the most recent news post):
+
+ articles[0].title
+ articles[0].url
+ articles[0].summary
+ articles[0].author
+ articles[0].date
+
+The way it might actually be used in the template:
+
+ <h3>Articles Object</h3>
+ <div>
+ <a href="{{ articles[0].url }}">{{ articles[0].title }}</a>
+ </div>
+ <div>
+ {{ articles[0].summary }}
+ </div>
+ <div>
+ {{ articles[0].author }}
+ </div>
+ <div>
+ {{ articles[0].date }}
+ </div>
+
diff --git a/content/about/meta/markdown.md b/content/about/meta/markdown.md
index 001be2b..6adf0e4 100644
--- a/content/about/meta/markdown.md
+++ b/content/about/meta/markdown.md
@@ -1,295 +1,295 @@
-Title: Markdown Cheatsheet
-Date: 2015-08-10T15:41:15-05:00
-Modified: 2015-08-11T11:43:00-05:00
-Author: Pat David
-
-This is a simple cheatsheet for writing in [Markdown].
-For a more complete reference, the Python-Markdown package refers one to the [Markdown Syntax] from John
Gruber.
-
-[TOC]
-
-## Paragraphs and Line Breaks
-
-Paragraphs are one or more consecutive lines of text, separated by one or more blank lines.
-A blank link will indicate a new paragraph to begin.
-
-If a hard `<br />` is desired, simply end the line with two or more spaces.
-The next line will still be in the same `<p>` element, but will be hard-wrapped.
-
-The above paragraphs look like this in plain Markdown:
-
- Paragraphs are one or more consecutive lines of text,
- separated by one or more blank lines.
- A blank link will indicate a new paragraph to begin.
-
- If a hard `<br />` is desired,
- simply end the line with two or more spaces.
- The next line will still be in the same `<p>` element,
- but will be hard-wrapped.
-
-
-## Headers
-
-Markdown uses two styles to denote headers.
-
-Setext-style headers use "underlines" with equal signs (for first-level headers), and dashes (for second
level):
-
- This is an H1
- =============
-
- This is an H2
- -------------
-
-Atx-style headers use from 1-6 hash characters at the start of the line,
-corresponding to header levels 1-6:
-
- # This is an H1
- ## This is an H2
- #### This is an H4
-
-
-
-## Blockquotes
-
-Blockquotes use a familiar email-style ">" character for quoting:
-
- > This is a blockquote with some information. If you
- > think this needs to be quoted.
-
-> This is a blockquote with some information. If you
-> think this needs to be quoted.
-
-Alternatively you can be lazy and only use the ">" character before the first line of a hard-wrapped
paragraph:
-
- > This is a blockquote with some information. If you
- think this needs to be quoted, here it is.
-
-> This is a blockquote with some information. If you
-think this needs to be quoted, here it is.
-
-
- > This is a blockquote with some information. If you
- think this needs to be quoted, here it is. Here is
- a nested quote inside this blockquote:
- > > A nested quote inside a previosu blockquote!
-
-> This is a blockquote with some information. If you
-think this needs to be quoted, here it is. Here is
-a nested quote inside this blockquote:
-> > A nested quote inside a previous blockquote!
-
- > Blockquotes can also have **Markdown** elements
- inside them that *will* get parsed.
-
- > ### A Header 3
- For all to see.
-
-> Blockquotes can also have **Markdown** elements
-inside them that **will** get parsed.
-
-> ### A Header 3
-For all to see.
-
-
-
-## Lists
-
-Ordered and unordered lists are supported.
-
-Unordered lists use asterisks, pluses, and/or hyphens -- interchangeably -- as markers:
-
- * Red
- * Green
- + Blue
-
-* Red
-* Green
-+ Blue
-
-Ordered lists use numbers followed by periods:
-
- 1. One Fish
- 2. Two Fish
- 3. Red Fish
- 5. Blue Fish
-
-1. One Fish
-2. Two Fish
-3. Red Fish
-5. Blue Fish
-
-**Notice** that the actual numbers are not used in creation of the list!
-The last element in our example is not a typo - it is a number "5", not 4.
-
-There can be multiple paragraphs in a list item.
-Each subsequent paragraph needs to be indented by either 4 spaces or one tab:
-
- 1. This is a first list item.
-
- I should probably make this a little neater in the next item.
- I'll try to make sure things look a little nicer as an example.
-
- 2. This is a second list item
- Just added some extra whitespace in front of this to make it neater
- in the source example.
-
-1. This is a first list item.
-
- I should probably make this a little neater in the next item.
- I'll try to make sure things look a little nicer as an example.
-
-2. This is a second list item
- Just added some extra whitespace in front of this to make it neater
- in the source example.
-
-
-
-## Code Blocks
-
-Code blocks will present the text exactly as shown and will automatically convert objects to their
corresponding html entity.
-To create a code block, simply indent every line of the block by 4 spaces or one tab:
-
- This would be a normal pargraph in a document.
-
- This is indented by 4 spaces and would show up as code.
- This second line would still be part of that code block.
-
-This would be a normal paragraph in a document.
-
- This is indented by 4 spaces and would show up as code.
- This second line would still be part of that code block.
-
-With the Python-Markdown extensions, you can also include an explicit declaration of the type of code for
highlighting.
-Begin the code block with three colons followed by the language to highlight as:
-
- :::html
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
-
-Which will yield:
-
- :::html
- <head>
- <meta charset="utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
-
-
-
-## Horizontal Rule
-
-A horizontal rule tag `<hr />` can be inserted by simply using three or more hyphens, asterisks, or
underscores on a line by themselves:
-
- * * *
- ***
- *********
- - - -
- ---
- _________
-
-Any of those will insert the horizontal rule at that location:
-
----
-
-
-## Links
-
-Markdown offers two styles of links: *inline* and *reference*.
-
-The link text is enclosed by [square brackets].
-
-Inline links use parenthesis immediately after the closing square bracket to contain the link URL, and an
optional title:
-
- This will [link to pixls.us](https://pixls.us "A Link to pixls.us").
-
-This will [link to pixls.us](https://pixls.us "A Link to pixls.us").
-
-You can use relative paths while on the same site:
-
- A link back to the [Meta page](/about/meta/).
- A link back to the [Meta page](../meta/).
-
-A link back to the [Meta page](/about/meta/).
-A link back to the [Meta page](../meta/).
-
-Reference-style links use a second set of square brackets with a self-chosen label to identify the link:
-
- This is another link to [pixls][1]
-
-Then anywhere in the document you can define the link label on it's own line:
-
- [1]: https://pixls.us "An Optional Title for the Link"
-
-Link definition names can contain any numbers, letters, spaces, or punctuation and are not case-sensitive:
-
- [link text][a]
- [link text][A]
-
-are equivalent links.
-
-There is also an *implicit link name* shortcut that lets you use the link text itself as the identifier.
-Use a second set of empty square brackets after the initial link text:
-
- [Google][]
-
-Where the link can then be identified elsewhere as:
-
- [Google]: http://www.google.com
-
-[Google]: http://www.google.com
-[1]: https://pixls.us
-
-
-
-## Emphasis
-
-Asterisks (\*) and underscores (\_) are used as indicators of emphasis.
-Text wrapped in on asterisk or underscore will be wrapped with an HTML `<em>` element.
-Double asterisks or underscores will be wrapped with an HTML `<strong>` tag:
-
- *single asterisk*
- _single underscore_
- **double asterisks**
- __double underscores__
-
-outputs:
-
- <em>single asterisk</em>
- <em>single underscore</em>
- <strong>double asterisks**
- <strong>double underscores</strong>
-
-or:
-
-*single asterisk*
-_single underscore_
-**double asterisks**
-__double underscores__
-
-## Code
-
-An inline span of code uses the backtick quote (\`) to offset it from surrounding text.
-
- You can use the `printf()` function.
-
-produces:
-
-You can use the `printf()` function.
-
-
-
-## Automatic Links
-
-A shortcut for creating links to URLs and email addresses can be used where the address is wrapped in angle
brackets:
-
- <https://pixls.us>
-
-Which will be turned into an html link of the address text:
-
- <a href="https://pixls.us">https://pixls.us</a>
-
-<https://pixls.us>
-
-
-[Markdown]:http://daringfireball.net/projects/markdown/
-[Markdown Syntax]: http://daringfireball.net/projects/markdown/syntax
+Title: Markdown Cheatsheet
+Date: 2015-08-10T15:41:15-05:00
+Modified: 2015-08-11T11:43:00-05:00
+Author: Pat David
+
+This is a simple cheatsheet for writing in [Markdown].
+For a more complete reference, the Python-Markdown package refers one to the [Markdown Syntax] from John
Gruber.
+
+[TOC]
+
+## Paragraphs and Line Breaks
+
+Paragraphs are one or more consecutive lines of text, separated by one or more blank lines.
+A blank link will indicate a new paragraph to begin.
+
+If a hard `<br />` is desired, simply end the line with two or more spaces.
+The next line will still be in the same `<p>` element, but will be hard-wrapped.
+
+The above paragraphs look like this in plain Markdown:
+
+ Paragraphs are one or more consecutive lines of text,
+ separated by one or more blank lines.
+ A blank link will indicate a new paragraph to begin.
+
+ If a hard `<br />` is desired,
+ simply end the line with two or more spaces.
+ The next line will still be in the same `<p>` element,
+ but will be hard-wrapped.
+
+
+## Headers
+
+Markdown uses two styles to denote headers.
+
+Setext-style headers use "underlines" with equal signs (for first-level headers), and dashes (for second
level):
+
+ This is an H1
+ =============
+
+ This is an H2
+ -------------
+
+Atx-style headers use from 1-6 hash characters at the start of the line,
+corresponding to header levels 1-6:
+
+ # This is an H1
+ ## This is an H2
+ #### This is an H4
+
+
+
+## Blockquotes
+
+Blockquotes use a familiar email-style ">" character for quoting:
+
+ > This is a blockquote with some information. If you
+ > think this needs to be quoted.
+
+> This is a blockquote with some information. If you
+> think this needs to be quoted.
+
+Alternatively you can be lazy and only use the ">" character before the first line of a hard-wrapped
paragraph:
+
+ > This is a blockquote with some information. If you
+ think this needs to be quoted, here it is.
+
+> This is a blockquote with some information. If you
+think this needs to be quoted, here it is.
+
+
+ > This is a blockquote with some information. If you
+ think this needs to be quoted, here it is. Here is
+ a nested quote inside this blockquote:
+ > > A nested quote inside a previosu blockquote!
+
+> This is a blockquote with some information. If you
+think this needs to be quoted, here it is. Here is
+a nested quote inside this blockquote:
+> > A nested quote inside a previous blockquote!
+
+ > Blockquotes can also have **Markdown** elements
+ inside them that *will* get parsed.
+
+ > ### A Header 3
+ For all to see.
+
+> Blockquotes can also have **Markdown** elements
+inside them that **will** get parsed.
+
+> ### A Header 3
+For all to see.
+
+
+
+## Lists
+
+Ordered and unordered lists are supported.
+
+Unordered lists use asterisks, pluses, and/or hyphens -- interchangeably -- as markers:
+
+ * Red
+ * Green
+ + Blue
+
+* Red
+* Green
++ Blue
+
+Ordered lists use numbers followed by periods:
+
+ 1. One Fish
+ 2. Two Fish
+ 3. Red Fish
+ 5. Blue Fish
+
+1. One Fish
+2. Two Fish
+3. Red Fish
+5. Blue Fish
+
+**Notice** that the actual numbers are not used in creation of the list!
+The last element in our example is not a typo - it is a number "5", not 4.
+
+There can be multiple paragraphs in a list item.
+Each subsequent paragraph needs to be indented by either 4 spaces or one tab:
+
+ 1. This is a first list item.
+
+ I should probably make this a little neater in the next item.
+ I'll try to make sure things look a little nicer as an example.
+
+ 2. This is a second list item
+ Just added some extra whitespace in front of this to make it neater
+ in the source example.
+
+1. This is a first list item.
+
+ I should probably make this a little neater in the next item.
+ I'll try to make sure things look a little nicer as an example.
+
+2. This is a second list item
+ Just added some extra whitespace in front of this to make it neater
+ in the source example.
+
+
+
+## Code Blocks
+
+Code blocks will present the text exactly as shown and will automatically convert objects to their
corresponding html entity.
+To create a code block, simply indent every line of the block by 4 spaces or one tab:
+
+ This would be a normal pargraph in a document.
+
+ This is indented by 4 spaces and would show up as code.
+ This second line would still be part of that code block.
+
+This would be a normal paragraph in a document.
+
+ This is indented by 4 spaces and would show up as code.
+ This second line would still be part of that code block.
+
+With the Python-Markdown extensions, you can also include an explicit declaration of the type of code for
highlighting.
+Begin the code block with three colons followed by the language to highlight as:
+
+ :::html
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+
+Which will yield:
+
+ :::html
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+
+
+
+## Horizontal Rule
+
+A horizontal rule tag `<hr />` can be inserted by simply using three or more hyphens, asterisks, or
underscores on a line by themselves:
+
+ * * *
+ ***
+ *********
+ - - -
+ ---
+ _________
+
+Any of those will insert the horizontal rule at that location:
+
+---
+
+
+## Links
+
+Markdown offers two styles of links: *inline* and *reference*.
+
+The link text is enclosed by [square brackets].
+
+Inline links use parenthesis immediately after the closing square bracket to contain the link URL, and an
optional title:
+
+ This will [link to pixls.us](https://pixls.us "A Link to pixls.us").
+
+This will [link to pixls.us](https://pixls.us "A Link to pixls.us").
+
+You can use relative paths while on the same site:
+
+ A link back to the [Meta page](/about/meta/).
+ A link back to the [Meta page](../meta/).
+
+A link back to the [Meta page](/about/meta/).
+A link back to the [Meta page](../meta/).
+
+Reference-style links use a second set of square brackets with a self-chosen label to identify the link:
+
+ This is another link to [pixls][1]
+
+Then anywhere in the document you can define the link label on it's own line:
+
+ [1]: https://pixls.us "An Optional Title for the Link"
+
+Link definition names can contain any numbers, letters, spaces, or punctuation and are not case-sensitive:
+
+ [link text][a]
+ [link text][A]
+
+are equivalent links.
+
+There is also an *implicit link name* shortcut that lets you use the link text itself as the identifier.
+Use a second set of empty square brackets after the initial link text:
+
+ [Google][]
+
+Where the link can then be identified elsewhere as:
+
+ [Google]: http://www.google.com
+
+[Google]: http://www.google.com
+[1]: https://pixls.us
+
+
+
+## Emphasis
+
+Asterisks (\*) and underscores (\_) are used as indicators of emphasis.
+Text wrapped in on asterisk or underscore will be wrapped with an HTML `<em>` element.
+Double asterisks or underscores will be wrapped with an HTML `<strong>` tag:
+
+ *single asterisk*
+ _single underscore_
+ **double asterisks**
+ __double underscores__
+
+outputs:
+
+ <em>single asterisk</em>
+ <em>single underscore</em>
+ <strong>double asterisks**
+ <strong>double underscores</strong>
+
+or:
+
+*single asterisk*
+_single underscore_
+**double asterisks**
+__double underscores__
+
+## Code
+
+An inline span of code uses the backtick quote (\`) to offset it from surrounding text.
+
+ You can use the `printf()` function.
+
+produces:
+
+You can use the `printf()` function.
+
+
+
+## Automatic Links
+
+A shortcut for creating links to URLs and email addresses can be used where the address is wrapped in angle
brackets:
+
+ <https://pixls.us>
+
+Which will be turned into an html link of the address text:
+
+ <a href="https://pixls.us">https://pixls.us</a>
+
+<https://pixls.us>
+
+
+[Markdown]:http://daringfireball.net/projects/markdown/
+[Markdown Syntax]: http://daringfireball.net/projects/markdown/syntax
diff --git a/content/about/meta/translating.fr.md b/content/about/meta/translating.fr.md
index 1761607..e4505e9 100644
--- a/content/about/meta/translating.fr.md
+++ b/content/about/meta/translating.fr.md
@@ -1,10 +1,10 @@
-Title: Créer Traductions
-Date: 2015-08-27T10:18:03-05:00
-Author: Pat David
-lang: fr
-slug: creating-translations
-
-This is the French version of the "Creating Translations" page.
-
-I'm sorry it's not in French just yet.
-It's really just here to serve as an example of a translated page.
+Title: Créer Traductions
+Date: 2015-08-27T10:18:03-05:00
+Author: Pat David
+lang: fr
+slug: creating-translations
+
+This is the French version of the "Creating Translations" page.
+
+I'm sorry it's not in French just yet.
+It's really just here to serve as an example of a translated page.
diff --git a/content/about/meta/translating.md b/content/about/meta/translating.md
index 6726a98..690cbcd 100644
--- a/content/about/meta/translating.md
+++ b/content/about/meta/translating.md
@@ -1,121 +1,121 @@
-Title: Creating Translations
-Date: 2015-08-27T10:18:03-05:00
-Author: Pat David
-lang: en
-slug: creating-translations
-
-I am assuming you are reading this because you'd like to submit a translation of an article?
-
-If so - YAY!
-**Thank you** for contributing!
-
-Creating a new translation of an existing article is fairly straightforward:
-
-1. Find the source file to translate.
-2. Create a new file in the same place, with the lang in the filename:
- original: `translating.md`
- translation: `translating.fr.md`
-
-3. Add the `lang` metadata to both the original and translation file:
- add `lang: en` to original
- add `lang: fr` to translation (example for French)
-
-4. To have different titles (translated title as well):
- * Add the same `slug` metadata to both files:
- add `slug: some-slug-name` to both original and translation file.
- * Then each file can have different titles.
-
-## Locate the Article You'll Translate
-
-Find the article source you want to translate.
-I will use this article you're reading as an example.
-It can be found in the source at this location:
-
- /content/about/meta/translating.md
-
-Now create a new file in the same location, with a slightly different filename to indicate the new language.
-A handy convention to follow is to use the two-letter code for the new language in the filename.
-So to include a French version of this page, we will create a new file:
-
- /content/about/meta/translating.fr.md
-
-
-## Modify/Add to Metadata
-
-### lang attribute
-
-The metadata for this article looks like this (Markdown):
-
- Title: Creating Translations
- Date: 2015-08-27T10:18:03-05:00
- Author: Pat David
-
-There needs to be an addition of a `lang` attribute to **both** the original and new translation of the
article.
-So this (english) version of the file must now get a `lang` attribute that identifies it as such:
-
-**translating.md:**
-
- :::markdown hl_lines="4 4"
- Title: Creating Translations
- Date: 2015-08-27T10:18:03-05:00
- Author: Pat David
- lang: en
-
-Similarly, the new translation file must also get a `lang` attribute for the new language:
-
-**translating.fr.md**
-
- :::markdown hl_lines="4 4"
- Title: Creating Translations
- Date: 2015-08-27T10:18:03-05:00
- Author: Pat David
- lang: fr
-
-
-### slug attribute & different title
-
-If you want to use a translated version of the article title, it will require one extra piece of metadata to
work properly.
-(Hopefully temporarily - still working on this).
-
-The addition of the `slug` attribute will let a different title be used in the translated version of the
article.
-The actual value of the attribute is left to the author to choose, but it *needs to match* in all the
translations of a page.
-
-So the base english article will need this `slug` attribute added:
-
-**translating.md:**
-
- :::markdown hl_lines="5"
- Title: Creating Translations
- Date: 2015-08-27T10:18:03-05:00
- Author: Pat David
- lang: en
- slug: creating-translations
-
-Any other translation will need *the exact same* slug added as well:
-
-**translating.fr.md**
-
- :::markdown hl_lines="5"
- Title: Creating Translations
- Date: 2015-08-27T10:18:03-05:00
- Author: Pat David
- lang: fr
- slug: creating-translations
-
-Once that is done, the `Title` attribute can be different between the two files and they will still be
marked as translations of each other:
-
-**translating.fr.md**
-
- :::markdown hl_lines="1"
- Title: Créer Traductions
- Date: 2015-08-27T10:18:03-05:00
- Author: Pat David
- lang: fr
- slug: creating-translations
-
-
-<style>
-.codehilite .err {
- border: none;
-}
-</style>
+Title: Creating Translations
+Date: 2015-08-27T10:18:03-05:00
+Author: Pat David
+lang: en
+slug: creating-translations
+
+I am assuming you are reading this because you'd like to submit a translation of an article?
+
+If so - YAY!
+**Thank you** for contributing!
+
+Creating a new translation of an existing article is fairly straightforward:
+
+1. Find the source file to translate.
+2. Create a new file in the same place, with the lang in the filename:
+ original: `translating.md`
+ translation: `translating.fr.md`
+
+3. Add the `lang` metadata to both the original and translation file:
+ add `lang: en` to original
+ add `lang: fr` to translation (example for French)
+
+4. To have different titles (translated title as well):
+ * Add the same `slug` metadata to both files:
+ add `slug: some-slug-name` to both original and translation file.
+ * Then each file can have different titles.
+
+## Locate the Article You'll Translate
+
+Find the article source you want to translate.
+I will use this article you're reading as an example.
+It can be found in the source at this location:
+
+ /content/about/meta/translating.md
+
+Now create a new file in the same location, with a slightly different filename to indicate the new language.
+A handy convention to follow is to use the two-letter code for the new language in the filename.
+So to include a French version of this page, we will create a new file:
+
+ /content/about/meta/translating.fr.md
+
+
+## Modify/Add to Metadata
+
+### lang attribute
+
+The metadata for this article looks like this (Markdown):
+
+ Title: Creating Translations
+ Date: 2015-08-27T10:18:03-05:00
+ Author: Pat David
+
+There needs to be an addition of a `lang` attribute to **both** the original and new translation of the
article.
+So this (english) version of the file must now get a `lang` attribute that identifies it as such:
+
+**translating.md:**
+
+ :::markdown hl_lines="4 4"
+ Title: Creating Translations
+ Date: 2015-08-27T10:18:03-05:00
+ Author: Pat David
+ lang: en
+
+Similarly, the new translation file must also get a `lang` attribute for the new language:
+
+**translating.fr.md**
+
+ :::markdown hl_lines="4 4"
+ Title: Creating Translations
+ Date: 2015-08-27T10:18:03-05:00
+ Author: Pat David
+ lang: fr
+
+
+### slug attribute & different title
+
+If you want to use a translated version of the article title, it will require one extra piece of metadata to
work properly.
+(Hopefully temporarily - still working on this).
+
+The addition of the `slug` attribute will let a different title be used in the translated version of the
article.
+The actual value of the attribute is left to the author to choose, but it *needs to match* in all the
translations of a page.
+
+So the base english article will need this `slug` attribute added:
+
+**translating.md:**
+
+ :::markdown hl_lines="5"
+ Title: Creating Translations
+ Date: 2015-08-27T10:18:03-05:00
+ Author: Pat David
+ lang: en
+ slug: creating-translations
+
+Any other translation will need *the exact same* slug added as well:
+
+**translating.fr.md**
+
+ :::markdown hl_lines="5"
+ Title: Creating Translations
+ Date: 2015-08-27T10:18:03-05:00
+ Author: Pat David
+ lang: fr
+ slug: creating-translations
+
+Once that is done, the `Title` attribute can be different between the two files and they will still be
marked as translations of each other:
+
+**translating.fr.md**
+
+ :::markdown hl_lines="1"
+ Title: Créer Traductions
+ Date: 2015-08-27T10:18:03-05:00
+ Author: Pat David
+ lang: fr
+ slug: creating-translations
+
+
+<style>
+.codehilite .err {
+ border: none;
+}
+</style>
diff --git a/content/about/meta/translations.fr.md b/content/about/meta/translations.fr.md
index 0cca675..f047394 100644
--- a/content/about/meta/translations.fr.md
+++ b/content/about/meta/translations.fr.md
@@ -1,78 +1,78 @@
-Title: Traductions (i18n)
-Date: 2015-08-21T11:45:47-05:00
-Author: Pat David
-lang: fr
-slug: translations
-
-Pelican avait déjà une belle simple support pour la traduction des pages et des articles.
-
-Pour faire une traduction, il suffit de créer un autre fichier avec le fichier de base. Tant que le *slug*
serait le même, un fichier serait considérée comme une traduction de l'autre. Définition de l'attribut `lang`
dans les métadonnées du fichier signalerait ce type de fichier, il est.
-<small>
-La limace est actuellement généré à partir du titre de la page dans les métadonnées.
-</small>
-
-A titre d'exemple, ce fichier est:
-
- content/about/meta/translating.md
-
-Et les métadonnées au sommet de ce fichier ressemble à ceci:
-
- Title: Translations (i18n)
- Date: 2015-08-21T11:45:47-05:00
- Author: Pat David
- lang: en
-
-Pour créer une version traduite de cette page, nous aimerions créer un nouveau fichier:
-
- content/about/meta/translating.fr.md
-
-Les métadonnées serait un peu différente, en ce que l'attribut `lang` serait différent maintenant:
-
-
- Title: Translations (i18n)
- Date: 2015-08-21T11:45:47-05:00
- Author: Pat David
- lang: fr
-
-Sinon tout le reste pourrait rester le même.
-
-En faisant cela, Pelican va maintenant automatiquement la liste de la traduction (s) étant disponible (par
défaut il est répertorié juste sous le titre). Il serait généralement ressembler à ceci (pour une traduction
française étant disponibles):
-
- Translations: fr
-
-
-## i18n_subsites
-
-Avec la mise en œuvre de i18n_subsites, le comportement est essentiellement le même.
-
-La différence est maintenant que d'un sous-site entièrement nouveau est construit. Le site avec les
anciennes traductions servirait une page traduite, mais ce serait une page statique simple.
-
-Cela signifie que tous les liens hors de la page à d'autres contenus souhaitez-vous apporter à la langue par
défaut (en) à nouveau. Si cette page avait une traduction, et que vous vouliez le voir, vous devez cliquer
sur l'option de traduction appropriée nouveau.
-
-L'option de traduction d'une seule page ne dispose d'aucun mécanisme pour traduire les modèles aussi bien
(juste le contenu de la page).
-
-Mise en œuvre du plugin i18n_subsites permet désormais un sous-ensemble du site qui sera construit sur la
base de l'option de langue. Donc, en cliquant sur une traduction de langue pour une page va maintenant mettre
l'utilisateur au sous-site correspondant.
-
-Ce sont les sous-sites qui se créés par exemple:
-
- gimp.org/fr/about/...
- gimp.org/de/about/...
-
-Et ainsi de suite pour chaque traduction.
-
-
-### Fallback
-
-Une fonctionnalité intéressante du plugin i18n_subsites est que les pages qui sont liées, mais le manque
d'une traduction, seront toujours montrer la version **en** comme solution de repli.
-
-
-* [A link to meta](/about/meta/) `[A link to meta](/about/meta/)`
- Leads back to english version of the site from everywhere.
-* [<del>A link to meta</del>](./about/meta/) `[A link to meta](./about/meta/)`
- Doesn't work right (as expected).
-* [A link to meta](../../about/meta/) `[A link to meta](../../about/meta/)`
- Leads to the translated version of the page correctly!
-* [A link to meta](../meta/) `[A link to meta](../meta/)`
- Also leads back to translated version of the page correctly.
-* [A link to meta](./) `[A link to meta](./)`
- Also leads back to translated version of the page correctly.
+Title: Traductions (i18n)
+Date: 2015-08-21T11:45:47-05:00
+Author: Pat David
+lang: fr
+slug: translations
+
+Pelican avait déjà une belle simple support pour la traduction des pages et des articles.
+
+Pour faire une traduction, il suffit de créer un autre fichier avec le fichier de base. Tant que le *slug*
serait le même, un fichier serait considérée comme une traduction de l'autre. Définition de l'attribut `lang`
dans les métadonnées du fichier signalerait ce type de fichier, il est.
+<small>
+La limace est actuellement généré à partir du titre de la page dans les métadonnées.
+</small>
+
+A titre d'exemple, ce fichier est:
+
+ content/about/meta/translating.md
+
+Et les métadonnées au sommet de ce fichier ressemble à ceci:
+
+ Title: Translations (i18n)
+ Date: 2015-08-21T11:45:47-05:00
+ Author: Pat David
+ lang: en
+
+Pour créer une version traduite de cette page, nous aimerions créer un nouveau fichier:
+
+ content/about/meta/translating.fr.md
+
+Les métadonnées serait un peu différente, en ce que l'attribut `lang` serait différent maintenant:
+
+
+ Title: Translations (i18n)
+ Date: 2015-08-21T11:45:47-05:00
+ Author: Pat David
+ lang: fr
+
+Sinon tout le reste pourrait rester le même.
+
+En faisant cela, Pelican va maintenant automatiquement la liste de la traduction (s) étant disponible (par
défaut il est répertorié juste sous le titre). Il serait généralement ressembler à ceci (pour une traduction
française étant disponibles):
+
+ Translations: fr
+
+
+## i18n_subsites
+
+Avec la mise en œuvre de i18n_subsites, le comportement est essentiellement le même.
+
+La différence est maintenant que d'un sous-site entièrement nouveau est construit. Le site avec les
anciennes traductions servirait une page traduite, mais ce serait une page statique simple.
+
+Cela signifie que tous les liens hors de la page à d'autres contenus souhaitez-vous apporter à la langue par
défaut (en) à nouveau. Si cette page avait une traduction, et que vous vouliez le voir, vous devez cliquer
sur l'option de traduction appropriée nouveau.
+
+L'option de traduction d'une seule page ne dispose d'aucun mécanisme pour traduire les modèles aussi bien
(juste le contenu de la page).
+
+Mise en œuvre du plugin i18n_subsites permet désormais un sous-ensemble du site qui sera construit sur la
base de l'option de langue. Donc, en cliquant sur une traduction de langue pour une page va maintenant mettre
l'utilisateur au sous-site correspondant.
+
+Ce sont les sous-sites qui se créés par exemple:
+
+ gimp.org/fr/about/...
+ gimp.org/de/about/...
+
+Et ainsi de suite pour chaque traduction.
+
+
+### Fallback
+
+Une fonctionnalité intéressante du plugin i18n_subsites est que les pages qui sont liées, mais le manque
d'une traduction, seront toujours montrer la version **en** comme solution de repli.
+
+
+* [A link to meta](/about/meta/) `[A link to meta](/about/meta/)`
+ Leads back to english version of the site from everywhere.
+* [<del>A link to meta</del>](./about/meta/) `[A link to meta](./about/meta/)`
+ Doesn't work right (as expected).
+* [A link to meta](../../about/meta/) `[A link to meta](../../about/meta/)`
+ Leads to the translated version of the page correctly!
+* [A link to meta](../meta/) `[A link to meta](../meta/)`
+ Also leads back to translated version of the page correctly.
+* [A link to meta](./) `[A link to meta](./)`
+ Also leads back to translated version of the page correctly.
diff --git a/content/about/meta/translations.md b/content/about/meta/translations.md
index d7ef93d..c78a152 100644
--- a/content/about/meta/translations.md
+++ b/content/about/meta/translations.md
@@ -1,119 +1,119 @@
-Title: Translations (i18n)
-Date: 2015-08-21T11:45:47-05:00
-Author: Pat David
-lang: en
-slug: translations
-
-Pelican already had a nice simple support for translating pages and articles.
-
-To do a translation, simply create another file alongside the base file.
-As long as the *slug* would be the same, one file would be considered a translation of the other.
-Setting the `lang` attribute in the file metadata would signal what type of file it is.
-
-<small>
-The *slug* is currently generated from the filename.
-</small>
-
-As an example, this file is:
-
- content/about/meta/translating.md
-
-And the metadata at the top of this file looks like this:
-
- Title: Translations (i18n)
- Date: 2015-08-21T11:45:47-05:00
- Author: Pat David
- lang: en
-
-To create a translated version of this page, we would create a new file:
-
- content/about/meta/translating.fr.md
-
-The metadata would look slightly different, in that the `lang` attribute would be different now:
-
-
- Title: Translations (i18n)
- Date: 2015-08-21T11:45:47-05:00
- Author: Pat David
- lang: fr
-
-Otherwise everything else could stay the same.
-
-When doing this, Pelican will now automatically list the translation(s) being available
-(by default it is listed just under the title).
-It would typically look like this (for a French translation being available):
-
- Translations: fr
-
-
-## i18n_subsites
-
-With the implementation of i18n_subsites, the behavior is mostly the same.
-
-The difference now is that an entirely new sub-site is built.
-The site with the old translations would serve a translated page, but it would be a simple static page.
-
-This means that any links off the page to other content would bring you to the default language (en) again.
-*If* that page had a translation, and you wanted to see it, you would have to click on the appropriate
translation option again.
-
-The single-page translation option doesn't have any mechanism for translating the templates as well (just
the page content).
-
-Implementation of the i18n_subsites plugin now allows an entire sub-site to be built based on the language
option.
-So clicking on a language translation for a page will now bring the user to the corresponding sub-site.
-
-These are the sub-sites that get created for example:
-
- gimp.org/fr/about/...
- gimp.org/de/about/...
-
-And so on for each translation.
-
-
-### Fallback
-
-A nice feature of the i18n_subsites plugin is that pages that are linked, but lack a translation, will still
show the **en** version as a fallback.
-
-
-### I Can't Believe That Worked...
-
-So I had to hack at the `mimic_hierarchy` plugin again to fix one piece of small weirdness with
i18n_subsites.
-
-The problem was that if you had a file, and it's translation:
-
- /about/meta/index.md
- /about/meta/index.fr.md
-
-Then the path/files that get created with i18n look like this, respectively:
-
- gimp.org/about/meta/index.html
- gimp.org/fr/about/meta/index.fr.html
-
-Which is _less_ than ideal. The reason is that if I wanted to get to the first instance with a pretty url,
I could go to:
-
- gimp.org/about/meta/
-
-Likewise, linking to that page internally could be done easily through either `{filename}` to the
pre-rendered file:
-
- [A link to meta]({filename}../../about/meta/index.md)
-
-Which would render this: [A link to meta]({filename}../../about/meta/index.md)
-
-The problem with using this link is that if it is called from a translated page, it will cause it to lead
back to the **en** version of the page.
-A better solution would be to allow internal links to simply point to locations directly without having to
worry about the sub-site.
-Some different link types to test:
-
-* [A link to meta](/about/meta/) `[A link to meta](/about/meta/)`
- Leads back to english version of the site from everywhere.
-* [<del>A link to meta</del>](./about/meta/) `[A link to meta](./about/meta/)`
- Doesn't work right (as expected).
-* [A link to meta](../../about/meta/) `[A link to meta](../../about/meta/)`
- Leads to the translated version of the page correctly!
-* [A link to meta](../meta/) `[A link to meta](../meta/)`
- Also leads back to translated version of the page correctly.
-* [A link to meta](./) `[A link to meta](./)`
- Also leads back to translated version of the page correctly.
-
-At the moment, we basically need to use relative links to the output files, which will then work no matter
what the translation is it's used from.
-
-The other option is to continue using direct linking to files pre-rendering, as in the Pelican manual (and
above).
-The writer just needs to be careful to link to the correct place when doing this.
+Title: Translations (i18n)
+Date: 2015-08-21T11:45:47-05:00
+Author: Pat David
+lang: en
+slug: translations
+
+Pelican already had a nice simple support for translating pages and articles.
+
+To do a translation, simply create another file alongside the base file.
+As long as the *slug* would be the same, one file would be considered a translation of the other.
+Setting the `lang` attribute in the file metadata would signal what type of file it is.
+
+<small>
+The *slug* is currently generated from the filename.
+</small>
+
+As an example, this file is:
+
+ content/about/meta/translating.md
+
+And the metadata at the top of this file looks like this:
+
+ Title: Translations (i18n)
+ Date: 2015-08-21T11:45:47-05:00
+ Author: Pat David
+ lang: en
+
+To create a translated version of this page, we would create a new file:
+
+ content/about/meta/translating.fr.md
+
+The metadata would look slightly different, in that the `lang` attribute would be different now:
+
+
+ Title: Translations (i18n)
+ Date: 2015-08-21T11:45:47-05:00
+ Author: Pat David
+ lang: fr
+
+Otherwise everything else could stay the same.
+
+When doing this, Pelican will now automatically list the translation(s) being available
+(by default it is listed just under the title).
+It would typically look like this (for a French translation being available):
+
+ Translations: fr
+
+
+## i18n_subsites
+
+With the implementation of i18n_subsites, the behavior is mostly the same.
+
+The difference now is that an entirely new sub-site is built.
+The site with the old translations would serve a translated page, but it would be a simple static page.
+
+This means that any links off the page to other content would bring you to the default language (en) again.
+*If* that page had a translation, and you wanted to see it, you would have to click on the appropriate
translation option again.
+
+The single-page translation option doesn't have any mechanism for translating the templates as well (just
the page content).
+
+Implementation of the i18n_subsites plugin now allows an entire sub-site to be built based on the language
option.
+So clicking on a language translation for a page will now bring the user to the corresponding sub-site.
+
+These are the sub-sites that get created for example:
+
+ gimp.org/fr/about/...
+ gimp.org/de/about/...
+
+And so on for each translation.
+
+
+### Fallback
+
+A nice feature of the i18n_subsites plugin is that pages that are linked, but lack a translation, will still
show the **en** version as a fallback.
+
+
+### I Can't Believe That Worked...
+
+So I had to hack at the `mimic_hierarchy` plugin again to fix one piece of small weirdness with
i18n_subsites.
+
+The problem was that if you had a file, and it's translation:
+
+ /about/meta/index.md
+ /about/meta/index.fr.md
+
+Then the path/files that get created with i18n look like this, respectively:
+
+ gimp.org/about/meta/index.html
+ gimp.org/fr/about/meta/index.fr.html
+
+Which is _less_ than ideal. The reason is that if I wanted to get to the first instance with a pretty url,
I could go to:
+
+ gimp.org/about/meta/
+
+Likewise, linking to that page internally could be done easily through either `{filename}` to the
pre-rendered file:
+
+ [A link to meta]({filename}../../about/meta/index.md)
+
+Which would render this: [A link to meta]({filename}../../about/meta/index.md)
+
+The problem with using this link is that if it is called from a translated page, it will cause it to lead
back to the **en** version of the page.
+A better solution would be to allow internal links to simply point to locations directly without having to
worry about the sub-site.
+Some different link types to test:
+
+* [A link to meta](/about/meta/) `[A link to meta](/about/meta/)`
+ Leads back to english version of the site from everywhere.
+* [<del>A link to meta</del>](./about/meta/) `[A link to meta](./about/meta/)`
+ Doesn't work right (as expected).
+* [A link to meta](../../about/meta/) `[A link to meta](../../about/meta/)`
+ Leads to the translated version of the page correctly!
+* [A link to meta](../meta/) `[A link to meta](../meta/)`
+ Also leads back to translated version of the page correctly.
+* [A link to meta](./) `[A link to meta](./)`
+ Also leads back to translated version of the page correctly.
+
+At the moment, we basically need to use relative links to the output files, which will then work no matter
what the translation is it's used from.
+
+The other option is to continue using direct linking to files pre-rendering, as in the Pelican manual (and
above).
+The writer just needs to be careful to link to the correct place when doing this.
diff --git a/content/about/meta/using-pelican/index.md b/content/about/meta/using-pelican/index.md
index 2007d66..f7ac460 100644
--- a/content/about/meta/using-pelican/index.md
+++ b/content/about/meta/using-pelican/index.md
@@ -1,153 +1,153 @@
-Title: Using Pelican
-Date: 2015-08-10T14:43:06-05:00
-Modified: 2015-08-10T14:43:11-05:00
-Author: Pat David
-Summary: Using Pelican
-
-These are some meta notes about using the Pelican build system, including any idiosyncrasies I come across
while testing it.
-
-## Project Directory Structure
-
-This project (the entire site) is housed under a single directory.
-The important files and directories look like this:
-
-```
-gimp-web-static/
- - pelicanconf.py
- - Makefile
- - content/
- - about/
- - index.md
- - meta/
- - index.md
- - wtf-pelican.md
- - fluffle-puff.jpg
- - using-pelican/
- - index.md
- - to-do/
- - index.md
- - tutorials/
- - index.md
- - GIMP_Quickies/
- - index.md
- - ...
- - news/
- - 2015-08-10 An Update.md
- - 2015-07-28 Other Stuff.md
- - ...
- - plugins/
- - themes/
- - output/
-```
-
-
-## pelicanconf.py
-
-This file contains settings for Pelican to generate the site.
-Don't play with this file unless you're feeling comfortable about what things do.
-
-
-## Content
-
-There are two main types of content as far as Pelican is concerned: **pages** and **articles**.
-
-
-### Pages
-
-Pages are simply static page content that doesn't change often in general.
-**About**, **Downloads**, or even this **Meta** page are all considered *page* content.
-
-Almost *all* of the old site could be considered *page* content.
-
-
-#### In Pelican
-
-The way that Pelican is told to parse content as *pages* rather than *articles* is through the
`pelicanconf.py` file in the root of the project directory.
-There is a particular setting in that file that describes the path to *page* content (relative to the
`content` directory):
-
-`PAGE_PATHS = ['about', 'tutorials']`
-
-As you can see, two directories of content will be parsed as *pages*, `about` and `tutorials`.
-
-The modification of the [Page Hierarchy]({filename}../wtf-pelican.md) plugin means that any sub-folders of
`page` directories will be parsed and nested just as they are in the `content` directory.
-
-
-#### Tutorials
-
-A good example of *page* content are the tutorials from the old site.
-The modified Page Hierarchy plugin is handy here, as it allows the tutorials to be stand-alone discrete
directories full of assets + the tutorial written as a Markdown file.
-This makes things much more portable in the event the user wants to re-use the tutorials somewhere else, or
if the site infrastructure changes for some reason.
-
-
-
-### Articles
-
-*Articles* to Pelican are dated content being published in the context of time.
-They are usually permalinked based on their date/title and are often displayed on a page as an archival
series of posts.
-
-
-#### News Items (and Blog Posts?)
-
-The most natural fit for this type of content would be *News* posts and similarly *Blog* posts.
-There's really no difference, the posts are all *Articles* as far as Pelican is concerned.
-The nice difference from the past is that each post now gets it's own permalinked page.
-
-<del>Any content *not* explicitly inside of a `PAGE_PATHS` location will be parsed as an *Article* by
Pelican.</del>
-For keeping things tidy, I've created a sub-directory called *news* to keep those posts organized.
-
-The `pelicanconf.py` file has a setting for explicitly setting the location of *Articles*:
-
- ARTICLES_PATHS = ['news']
-
-This will tell Pelican to look for articles only under the listed path(s).
-
----
-## Pelican Notes
-
-### Hide Page on Navigation
-
-To hide a page from being included on the navigation elements, add to the pages metadata:
-
-`status: hidden`
-
-At the moment, with the addition of the *Page Hierarchy* plugin, each page also gets extra metadata
-that describes the pages parents and children.
-While testing, I assumed I would *not* want sub-pages to be listed in the navigation (ie: only top-level
pages should be listed).
-
-So, in the `themes/newgimp/templates/base.html` base template file, I did this to the navigation element:
-
- {% for p in PAGES %}
- {% if p.parents|length == 1 %}
- <li{% if p == page %} class="active"{% endif %}>
- <a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a>
- </li>
- {% endif %}
- {% endfor %}
-
-That is, if page.parents length is "1", then it must be a top-level page, and list it in the navigation.
-Note that the `status: hidden` metadata on the page will override this behavior if desired.
-
-
-### Python SimpleHTTPServer & SVG
-
-Apparently the python (2.7.x) built-in http server doesn't serve .svg files correctly for use as images in
html.
-To fix this, either run a different http server to test with, or from [this blog
post](http://gotmetoo.blogspot.com/2013/07/python-simple-http-server-with-svg.html) you can do this:
-
- :::python
- #!/usr/bin/python
- import SimpleHTTPServer
- import SocketServer
- import mimetypes
-
- PORT = 8000
-
- Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
-
- Handler.extensions_map['.svg']='image/svg+xml'
- httpd = SocketServer.TCPServer(("", PORT), Handler)
-
- print "serving at port", PORT
- httpd.serve_forever()
-
-Or just be aware that any SVG elements used as images will not display correctly on the page (but *should*
display fine when being served from wgo).
-Honestly, if you're not working on showing/linking SVG elements as images, you can safely ignore this.
+Title: Using Pelican
+Date: 2015-08-10T14:43:06-05:00
+Modified: 2015-08-10T14:43:11-05:00
+Author: Pat David
+Summary: Using Pelican
+
+These are some meta notes about using the Pelican build system, including any idiosyncrasies I come across
while testing it.
+
+## Project Directory Structure
+
+This project (the entire site) is housed under a single directory.
+The important files and directories look like this:
+
+```
+gimp-web-static/
+ - pelicanconf.py
+ - Makefile
+ - content/
+ - about/
+ - index.md
+ - meta/
+ - index.md
+ - wtf-pelican.md
+ - fluffle-puff.jpg
+ - using-pelican/
+ - index.md
+ - to-do/
+ - index.md
+ - tutorials/
+ - index.md
+ - GIMP_Quickies/
+ - index.md
+ - ...
+ - news/
+ - 2015-08-10 An Update.md
+ - 2015-07-28 Other Stuff.md
+ - ...
+ - plugins/
+ - themes/
+ - output/
+```
+
+
+## pelicanconf.py
+
+This file contains settings for Pelican to generate the site.
+Don't play with this file unless you're feeling comfortable about what things do.
+
+
+## Content
+
+There are two main types of content as far as Pelican is concerned: **pages** and **articles**.
+
+
+### Pages
+
+Pages are simply static page content that doesn't change often in general.
+**About**, **Downloads**, or even this **Meta** page are all considered *page* content.
+
+Almost *all* of the old site could be considered *page* content.
+
+
+#### In Pelican
+
+The way that Pelican is told to parse content as *pages* rather than *articles* is through the
`pelicanconf.py` file in the root of the project directory.
+There is a particular setting in that file that describes the path to *page* content (relative to the
`content` directory):
+
+`PAGE_PATHS = ['about', 'tutorials']`
+
+As you can see, two directories of content will be parsed as *pages*, `about` and `tutorials`.
+
+The modification of the [Page Hierarchy]({filename}../wtf-pelican.md) plugin means that any sub-folders of
`page` directories will be parsed and nested just as they are in the `content` directory.
+
+
+#### Tutorials
+
+A good example of *page* content are the tutorials from the old site.
+The modified Page Hierarchy plugin is handy here, as it allows the tutorials to be stand-alone discrete
directories full of assets + the tutorial written as a Markdown file.
+This makes things much more portable in the event the user wants to re-use the tutorials somewhere else, or
if the site infrastructure changes for some reason.
+
+
+
+### Articles
+
+*Articles* to Pelican are dated content being published in the context of time.
+They are usually permalinked based on their date/title and are often displayed on a page as an archival
series of posts.
+
+
+#### News Items (and Blog Posts?)
+
+The most natural fit for this type of content would be *News* posts and similarly *Blog* posts.
+There's really no difference, the posts are all *Articles* as far as Pelican is concerned.
+The nice difference from the past is that each post now gets it's own permalinked page.
+
+<del>Any content *not* explicitly inside of a `PAGE_PATHS` location will be parsed as an *Article* by
Pelican.</del>
+For keeping things tidy, I've created a sub-directory called *news* to keep those posts organized.
+
+The `pelicanconf.py` file has a setting for explicitly setting the location of *Articles*:
+
+ ARTICLES_PATHS = ['news']
+
+This will tell Pelican to look for articles only under the listed path(s).
+
+---
+## Pelican Notes
+
+### Hide Page on Navigation
+
+To hide a page from being included on the navigation elements, add to the pages metadata:
+
+`status: hidden`
+
+At the moment, with the addition of the *Page Hierarchy* plugin, each page also gets extra metadata
+that describes the pages parents and children.
+While testing, I assumed I would *not* want sub-pages to be listed in the navigation (ie: only top-level
pages should be listed).
+
+So, in the `themes/newgimp/templates/base.html` base template file, I did this to the navigation element:
+
+ {% for p in PAGES %}
+ {% if p.parents|length == 1 %}
+ <li{% if p == page %} class="active"{% endif %}>
+ <a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a>
+ </li>
+ {% endif %}
+ {% endfor %}
+
+That is, if page.parents length is "1", then it must be a top-level page, and list it in the navigation.
+Note that the `status: hidden` metadata on the page will override this behavior if desired.
+
+
+### Python SimpleHTTPServer & SVG
+
+Apparently the python (2.7.x) built-in http server doesn't serve .svg files correctly for use as images in
html.
+To fix this, either run a different http server to test with, or from [this blog
post](http://gotmetoo.blogspot.com/2013/07/python-simple-http-server-with-svg.html) you can do this:
+
+ :::python
+ #!/usr/bin/python
+ import SimpleHTTPServer
+ import SocketServer
+ import mimetypes
+
+ PORT = 8000
+
+ Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
+
+ Handler.extensions_map['.svg']='image/svg+xml'
+ httpd = SocketServer.TCPServer(("", PORT), Handler)
+
+ print "serving at port", PORT
+ httpd.serve_forever()
+
+Or just be aware that any SVG elements used as images will not display correctly on the page (but *should*
display fine when being served from wgo).
+Honestly, if you're not working on showing/linking SVG elements as images, you can safely ignore this.
diff --git a/content/about/prehistory.md b/content/about/prehistory.md
index 4886adb..f1340b7 100644
--- a/content/about/prehistory.md
+++ b/content/about/prehistory.md
@@ -1,286 +1,286 @@
-Title: How It All Started...
-Date: 2015-07-29T14:40:35-05:00
-Modified: 2015-07-29T14:40:43-05:00
-Author: Pat David
-Summary:
-
-
-## July 1995 - Two questions
-
-At the end of July 1995, Peter Mattis posted a message in several newsgroups related to X11 and Linux
application development, asking two questions and giving hints about an interesting program...
-
-<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
-<b>From:</b> Peter Mattis
-<b>Subject:</b> Image Manipulation Program Features
-<b>Date:</b> 1995-07-29
-<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.development.apps/msg/ffa0c060f527159b">petm-2907952329370001
charnley hip berkeley edu</a>>
-<b>Newsgroups:</b> comp.windows.x,comp.windows.x.apps,comp.os.linux.x,comp.os.linux.development.apps
-
-Suppose someone decided to write a graphical image manipulation program
-(akin to photoshop). Out of curiousity (and maybe something else), I have a
-few (2) questions:
-
- What kind of features should it have? (tools, selections, filters, etc.)
- What file formats should it support? (jpeg, gif, tiff, etc.)
-
-Thanks in advance,
- Peter Mattis
-</pre>
-
-## July 1995 - A program using plug-ins?
-
-Two weeks before, he was mentioning some program using plug-ins...
-
-<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
-<b>From:</b> Peter Mattis
-<b>Subject:</b> Re: Best way to write plug-ins?
-<b>Date:</b> 1995-07-16
-<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.development.apps/msg/a385210efec43df3">3ua2hd$bbv agate
berkeley edu</a>>
-<b>Newsgroups:</b> comp.os.linux.development.apps
-
-In article <3u7amh$ felix cc gatech edu>,
-Jeff Garzik <jgar cc gatech edu> wrote:
->I am writing an application for a my company, and I am interested in
->making it very easy to hook into internal program data (like a
->PhotoShop Plug-In, if you know what one of those is). What would be
->the best way to do this?
->
->I can only think of two ways to do it right offhand, but I would like
->to avoid the second (call me a purist):
->
->* Allocate shared memory to a child process, which is either an
-> a.out or ELF binary.
->* Write the data out to a temporary file, or pipe, which the child
-> executable then reads.
->
->Is there a better way?
-
-Well, I'm currently writing an application that uses plug-in modules. The
-technique I use is to use pipes to handle communication and to use shared
-memory to pass large data structures back and forth. (Well, I guess they
-aren't really "passed" when using shared memory, now are they. :)
-
-It is, however, not very easy to hook into internal program data. I set up
-a fairly simple message passing system to handle requests for data. It works
-fine for my purposes, but it wouldn't easily expand to allow access to
-arbitrary data structures in the main application.
-
-Mail me if you want more specifics.
-
-Peter Mattis
-</pre>
-
-## November 1995 - An Announcement
-
-And then in November comes the first announcement of a beta release of the General Image Manipulation
Program, "The GIMP" (later renamed to just "GIMP").
-
-<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
-<b>From:</b> Peter Mattis
-<b>Subject:</b> ANNOUNCE: The GIMP
-<b>Date:</b> 1995-11-21
-<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.development.apps/msg/b5a9a98ef1e9fd4d">48s543$r7b agate
berkeley edu</a>>
-<b>Newsgroups:</b> comp.os.linux.development.apps,comp.os.linux.misc,comp.windows.x.apps
-
-The GIMP: the General Image Manipulation Program
-------------------------------------------------
-
-The GIMP is designed to provide an intuitive graphical interface to a
-variety of image editing operations. Here is a list of the GIMP's
-major features:
-
- Image viewing
- -------------
-
- * Supports 8, 15, 16 and 24 bit color.
- * Ordered and Floyd-Steinberg dithering for 8 bit displays.
- * View images as rgb color, grayscale or indexed color.
- * Simultaneously edit multiple images.
- * Zoom and pan in real-time.
- * GIF, JPEG, PNG, TIFF and XPM support.
-
- Image editing
- -------------
-
- * Selection tools including rectangle, ellipse, free, fuzzy, bezier
- and intelligent.
- * Transformation tools including rotate, scale, shear and flip.
- * Painting tools including bucket, brush, airbrush, clone, convolve,
- blend and text.
- * Effects filters (such as blur, edge detect).
- * Channel & color operations (such as add, composite, decompose).
- * Plug-ins which allow for the easy addition of new file formats and
- new effect filters.
- * Multiple undo/redo.
-
-Requirements
-------------
-
- * The operating system must support shared memory.
- * X11 R5 or R6\. (Actually, it may work on R4, but we have not had a
- chance to test it).
- * The X-server must support the X shared memory extension. (The
- X-server does not actually need to support shared memory so this is
- only a temporary situation until we integrate the configure
- information with the source code).
- * Motif 1.2 or above.
-
-The GIMP has been tested (and developed) on the following operating
-systems: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX.
-
-Currently, the biggest restriction to running the GIMP is the Motif
-requirement. We will release a statically linked binary for several
-systems soon (including Linux).
-
-URLs
-----
-
-http://www.csua.berkeley.edu/~gimp
-ftp://ftp.csua.berkeley.edu/pub/gimp
-mailto:gimp soda csua berkeley edu
-
-Brought to you by
------------------
-
- Spencer Kimball (spencer soda csua berkeley edu)
- Peter Mattis (petm soda csua berkeley edu)
-
-NOTE
-----
-
-This software is currently a beta release. This means that we haven't
-implemented all of the features we think are required for a full,
-unqualified release. There are undoubtedly bugs we haven't found yet
-just waiting to surface given the right conditions. If you run across
-one of these, please send mail to gimp soda csua berkeley edu with
-precise details on how it can be reliably reproduced.
-</pre>
-
-## February 1996 - GIMP 0.54
-
-GIMP 0.54, the (in)famous Motif release, is announced in February 1996.
-
-<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
-<b>From:</b> Peter Mattis
-<b>Subject:</b> The GIMP v0.54 -- General Image Manipulation Program
-<b>Date:</b> 1996-02-15
-<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.announce/msg/e1c97862ec4e89b1">cola-liw-824385260-28937-1
oravannahka helsinki fi</a>>
-<b>Followup-To:</b> comp.os.linux.development.apps
-<b>Newsgroups:</b> comp.os.linux.announce
-
-A new version of the GIMP has been released. 0.54 features some
-improvements over earlier versions and many bug fixes. (I tried my
-hand at using Purify and found out what an extremely cool tool it
-is). Also available are precompiled binaries for HP's, Suns (both
-Sunos 4.1.x and Solaris), SGI's, and Linux a.out. I'm attaching the
-README file to the end of this message which contains the url's for
-getting the source and binaries.
-
-This is a partial list of changes from earlier versions:
-
- * Fixed lots of other shit...added targa (tga) and pnm support...
- * Fixed a bit of stupid programming that caused some memory in
- autodialogs to never be freed.
- * Windows tend to retain their scale when using plug-ins which
- create new images now. (Such as "duplicate").
- * Used purify and found some stupid memory bugs. These include
- creating several arrays 1 byte too small and using unitialized memory
- in one instance.
- * Fixed a bug in bezier selections when an anchor point was outside
- of the image.
- * Implemented a dirty bit for images. Modified images will prompt to
- be saved before being closed.
- * Made a slight modification to the way the file overwrite dialog works.
-
-
-Future plans
-------------
-
-During Christmas break we encountered Photoshop 3.0 and discovered the
-"joy of layers". This functionality was deemed absolutely necessary
-and will part of the next release of the GIMP. This will involve major
-changes to many parts of the GIMP and is not expected to be ready for
-several months. The other major item being changed is a reworking of
-the interface (and perhaps the dropping of Motif!). Please do not bug
-us about when these changes will be ready. It only distracts us and
-slows us down. (Suffice it to say, we think the changes will be worth
-the wait).
-
-The GIMP: the General Image Manipulation Program
-------------------------------------------------
-
-The GIMP is designed to provide an intuitive graphical interface to a
-variety of image editing operations. Here is a list of the GIMP's
-major features:
-
- Image viewing
- -------------
-
- * Supports 8, 15, 16 and 24 bit color.
- * Ordered and Floyd-Steinberg dithering for 8 bit displays.
- * View images as rgb color, grayscale or indexed color.
- * Simultaneously edit multiple images.
- * Zoom and pan in real-time.
- * GIF, JPEG, PNG, TIFF and XPM support.
-
- Image editing
- -------------
-
- * Selection tools including rectangle, ellipse, free, fuzzy, bezier
- and intelligent.
- * Transformation tools including rotate, scale, shear and flip.
- * Painting tools including bucket, brush, airbrush, clone, convolve,
- blend and text.
- * Effects filters (such as blur, edge detect).
- * Channel & color operations (such as add, composite, decompose).
- * Plug-ins which allow for the easy addition of new file formats and
- new effect filters.
- * Multiple undo/redo.
-
-Requirements
-------------
-
- * The operating system must support shared memory.
- * X11 R5 or R6\. (Actually, it may work on R4, but we have not had a
- chance to test it).
- * The X-server must support the X shared memory extension. (The
- X-server does not actually need to support shared memory so this is
- only a temporary situation until we integrate the configure
- information with the source code).
- * Motif 1.2 or above.
-
-The GIMP has been tested (and developed) on the following operating
-systems: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX.
-
-Currently, the biggest restriction to running the GIMP is the Motif
-requirement. We will release a statically linked binary for several
-systems soon (including Linux).
-
-URLs
-----
-
-http://www.xcf.berkeley.edu/~gimp
-ftp://ftp.xcf.berkeley.edu/pub/gimp
-mailto:gimp xcf berkeley edu
-
-Brought to you by
------------------
-
- Spencer Kimball (spencer xcf berkeley edu)
- Peter Mattis (petm xcf berkeley edu)
-
-NOTE
-----
-
-This software is currently a beta release. This means that we haven't
-implemented all of the features we think are required for a full,
-unqualified release. There are undoubtedly bugs we haven't found yet
-just waiting to surface given the right conditions. If you run across
-one of these, please send mail to gimp xcf berkeley edu with
-precise details on how it can be reproduced.
-
-</pre>
-
-For historical interest, the Internet Archive has a copy of the link in Peter's email above:
-[http://www.xcf.berkeley.edu/~gimp](https://web.archive.org/web/19970711112615/http://www.xcf.berkeley.edu/~gimp/)
-
-The story continues in "[A Brief (and ancient) History of GIMP](ancient_history.html)".
+Title: How It All Started...
+Date: 2015-07-29T14:40:35-05:00
+Modified: 2015-07-29T14:40:43-05:00
+Author: Pat David
+Summary:
+
+
+## July 1995 - Two questions
+
+At the end of July 1995, Peter Mattis posted a message in several newsgroups related to X11 and Linux
application development, asking two questions and giving hints about an interesting program...
+
+<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
+<b>From:</b> Peter Mattis
+<b>Subject:</b> Image Manipulation Program Features
+<b>Date:</b> 1995-07-29
+<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.development.apps/msg/ffa0c060f527159b">petm-2907952329370001
charnley hip berkeley edu</a>>
+<b>Newsgroups:</b> comp.windows.x,comp.windows.x.apps,comp.os.linux.x,comp.os.linux.development.apps
+
+Suppose someone decided to write a graphical image manipulation program
+(akin to photoshop). Out of curiousity (and maybe something else), I have a
+few (2) questions:
+
+ What kind of features should it have? (tools, selections, filters, etc.)
+ What file formats should it support? (jpeg, gif, tiff, etc.)
+
+Thanks in advance,
+ Peter Mattis
+</pre>
+
+## July 1995 - A program using plug-ins?
+
+Two weeks before, he was mentioning some program using plug-ins...
+
+<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
+<b>From:</b> Peter Mattis
+<b>Subject:</b> Re: Best way to write plug-ins?
+<b>Date:</b> 1995-07-16
+<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.development.apps/msg/a385210efec43df3">3ua2hd$bbv agate
berkeley edu</a>>
+<b>Newsgroups:</b> comp.os.linux.development.apps
+
+In article <3u7amh$ felix cc gatech edu>,
+Jeff Garzik <jgar cc gatech edu> wrote:
+>I am writing an application for a my company, and I am interested in
+>making it very easy to hook into internal program data (like a
+>PhotoShop Plug-In, if you know what one of those is). What would be
+>the best way to do this?
+>
+>I can only think of two ways to do it right offhand, but I would like
+>to avoid the second (call me a purist):
+>
+>* Allocate shared memory to a child process, which is either an
+> a.out or ELF binary.
+>* Write the data out to a temporary file, or pipe, which the child
+> executable then reads.
+>
+>Is there a better way?
+
+Well, I'm currently writing an application that uses plug-in modules. The
+technique I use is to use pipes to handle communication and to use shared
+memory to pass large data structures back and forth. (Well, I guess they
+aren't really "passed" when using shared memory, now are they. :)
+
+It is, however, not very easy to hook into internal program data. I set up
+a fairly simple message passing system to handle requests for data. It works
+fine for my purposes, but it wouldn't easily expand to allow access to
+arbitrary data structures in the main application.
+
+Mail me if you want more specifics.
+
+Peter Mattis
+</pre>
+
+## November 1995 - An Announcement
+
+And then in November comes the first announcement of a beta release of the General Image Manipulation
Program, "The GIMP" (later renamed to just "GIMP").
+
+<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
+<b>From:</b> Peter Mattis
+<b>Subject:</b> ANNOUNCE: The GIMP
+<b>Date:</b> 1995-11-21
+<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.development.apps/msg/b5a9a98ef1e9fd4d">48s543$r7b agate
berkeley edu</a>>
+<b>Newsgroups:</b> comp.os.linux.development.apps,comp.os.linux.misc,comp.windows.x.apps
+
+The GIMP: the General Image Manipulation Program
+------------------------------------------------
+
+The GIMP is designed to provide an intuitive graphical interface to a
+variety of image editing operations. Here is a list of the GIMP's
+major features:
+
+ Image viewing
+ -------------
+
+ * Supports 8, 15, 16 and 24 bit color.
+ * Ordered and Floyd-Steinberg dithering for 8 bit displays.
+ * View images as rgb color, grayscale or indexed color.
+ * Simultaneously edit multiple images.
+ * Zoom and pan in real-time.
+ * GIF, JPEG, PNG, TIFF and XPM support.
+
+ Image editing
+ -------------
+
+ * Selection tools including rectangle, ellipse, free, fuzzy, bezier
+ and intelligent.
+ * Transformation tools including rotate, scale, shear and flip.
+ * Painting tools including bucket, brush, airbrush, clone, convolve,
+ blend and text.
+ * Effects filters (such as blur, edge detect).
+ * Channel & color operations (such as add, composite, decompose).
+ * Plug-ins which allow for the easy addition of new file formats and
+ new effect filters.
+ * Multiple undo/redo.
+
+Requirements
+------------
+
+ * The operating system must support shared memory.
+ * X11 R5 or R6\. (Actually, it may work on R4, but we have not had a
+ chance to test it).
+ * The X-server must support the X shared memory extension. (The
+ X-server does not actually need to support shared memory so this is
+ only a temporary situation until we integrate the configure
+ information with the source code).
+ * Motif 1.2 or above.
+
+The GIMP has been tested (and developed) on the following operating
+systems: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX.
+
+Currently, the biggest restriction to running the GIMP is the Motif
+requirement. We will release a statically linked binary for several
+systems soon (including Linux).
+
+URLs
+----
+
+http://www.csua.berkeley.edu/~gimp
+ftp://ftp.csua.berkeley.edu/pub/gimp
+mailto:gimp soda csua berkeley edu
+
+Brought to you by
+-----------------
+
+ Spencer Kimball (spencer soda csua berkeley edu)
+ Peter Mattis (petm soda csua berkeley edu)
+
+NOTE
+----
+
+This software is currently a beta release. This means that we haven't
+implemented all of the features we think are required for a full,
+unqualified release. There are undoubtedly bugs we haven't found yet
+just waiting to surface given the right conditions. If you run across
+one of these, please send mail to gimp soda csua berkeley edu with
+precise details on how it can be reliably reproduced.
+</pre>
+
+## February 1996 - GIMP 0.54
+
+GIMP 0.54, the (in)famous Motif release, is announced in February 1996.
+
+<pre style='font-size: 0.75rem; white-space: pre-wrap; border: solid 1px #ccc; padding: 1rem;'>
+<b>From:</b> Peter Mattis
+<b>Subject:</b> The GIMP v0.54 -- General Image Manipulation Program
+<b>Date:</b> 1996-02-15
+<b>Message-ID:</b> <<a
href="http://groups.google.com/group/comp.os.linux.announce/msg/e1c97862ec4e89b1">cola-liw-824385260-28937-1
oravannahka helsinki fi</a>>
+<b>Followup-To:</b> comp.os.linux.development.apps
+<b>Newsgroups:</b> comp.os.linux.announce
+
+A new version of the GIMP has been released. 0.54 features some
+improvements over earlier versions and many bug fixes. (I tried my
+hand at using Purify and found out what an extremely cool tool it
+is). Also available are precompiled binaries for HP's, Suns (both
+Sunos 4.1.x and Solaris), SGI's, and Linux a.out. I'm attaching the
+README file to the end of this message which contains the url's for
+getting the source and binaries.
+
+This is a partial list of changes from earlier versions:
+
+ * Fixed lots of other shit...added targa (tga) and pnm support...
+ * Fixed a bit of stupid programming that caused some memory in
+ autodialogs to never be freed.
+ * Windows tend to retain their scale when using plug-ins which
+ create new images now. (Such as "duplicate").
+ * Used purify and found some stupid memory bugs. These include
+ creating several arrays 1 byte too small and using unitialized memory
+ in one instance.
+ * Fixed a bug in bezier selections when an anchor point was outside
+ of the image.
+ * Implemented a dirty bit for images. Modified images will prompt to
+ be saved before being closed.
+ * Made a slight modification to the way the file overwrite dialog works.
+
+
+Future plans
+------------
+
+During Christmas break we encountered Photoshop 3.0 and discovered the
+"joy of layers". This functionality was deemed absolutely necessary
+and will part of the next release of the GIMP. This will involve major
+changes to many parts of the GIMP and is not expected to be ready for
+several months. The other major item being changed is a reworking of
+the interface (and perhaps the dropping of Motif!). Please do not bug
+us about when these changes will be ready. It only distracts us and
+slows us down. (Suffice it to say, we think the changes will be worth
+the wait).
+
+The GIMP: the General Image Manipulation Program
+------------------------------------------------
+
+The GIMP is designed to provide an intuitive graphical interface to a
+variety of image editing operations. Here is a list of the GIMP's
+major features:
+
+ Image viewing
+ -------------
+
+ * Supports 8, 15, 16 and 24 bit color.
+ * Ordered and Floyd-Steinberg dithering for 8 bit displays.
+ * View images as rgb color, grayscale or indexed color.
+ * Simultaneously edit multiple images.
+ * Zoom and pan in real-time.
+ * GIF, JPEG, PNG, TIFF and XPM support.
+
+ Image editing
+ -------------
+
+ * Selection tools including rectangle, ellipse, free, fuzzy, bezier
+ and intelligent.
+ * Transformation tools including rotate, scale, shear and flip.
+ * Painting tools including bucket, brush, airbrush, clone, convolve,
+ blend and text.
+ * Effects filters (such as blur, edge detect).
+ * Channel & color operations (such as add, composite, decompose).
+ * Plug-ins which allow for the easy addition of new file formats and
+ new effect filters.
+ * Multiple undo/redo.
+
+Requirements
+------------
+
+ * The operating system must support shared memory.
+ * X11 R5 or R6\. (Actually, it may work on R4, but we have not had a
+ chance to test it).
+ * The X-server must support the X shared memory extension. (The
+ X-server does not actually need to support shared memory so this is
+ only a temporary situation until we integrate the configure
+ information with the source code).
+ * Motif 1.2 or above.
+
+The GIMP has been tested (and developed) on the following operating
+systems: Linux 1.2.13, Solaris 2.4, HPUX 9.05, SGI IRIX.
+
+Currently, the biggest restriction to running the GIMP is the Motif
+requirement. We will release a statically linked binary for several
+systems soon (including Linux).
+
+URLs
+----
+
+http://www.xcf.berkeley.edu/~gimp
+ftp://ftp.xcf.berkeley.edu/pub/gimp
+mailto:gimp xcf berkeley edu
+
+Brought to you by
+-----------------
+
+ Spencer Kimball (spencer xcf berkeley edu)
+ Peter Mattis (petm xcf berkeley edu)
+
+NOTE
+----
+
+This software is currently a beta release. This means that we haven't
+implemented all of the features we think are required for a full,
+unqualified release. There are undoubtedly bugs we haven't found yet
+just waiting to surface given the right conditions. If you run across
+one of these, please send mail to gimp xcf berkeley edu with
+precise details on how it can be reproduced.
+
+</pre>
+
+For historical interest, the Internet Archive has a copy of the link in Peter's email above:
+[http://www.xcf.berkeley.edu/~gimp](https://web.archive.org/web/19970711112615/http://www.xcf.berkeley.edu/~gimp/)
+
+The story continues in "[A Brief (and ancient) History of GIMP](ancient_history.html)".
diff --git a/content/books/index.md b/content/books/index.md
index ecbf007..0d46d6a 100644
--- a/content/books/index.md
+++ b/content/books/index.md
@@ -1,281 +1,281 @@
-Title: Books About GIMP
-Date: 2015-08-14T13:58:40-05:00
-Author: Pat David
-Status: hidden
-
-## Das GIMP 2.8-Buch
-
-![Das GIMP 2.8-Buch](gimp-2-8-kay-richter.jpg)
-**Author:** Kay Richter
- **Format:** eBook, 256pp.
- **ISBN-13:** ISBN 978-3-86899-857-3
- **Publisher/Date:** O'Reilly/2013
- **Website:** [www.oreilly.de/catalog/gimpbuchger/](http://www.oreilly.de/catalog/gimpbuchger/)
-
-**Description:** the book (in German) introduces readers to th basics of using GIMP, from importing to
editing to printing.
-
-## Niveles y Curvas con GIMP
-
-![Niveles y Curvas con GIMP](niveles-y-curvas-con-gimp.jpg)
-**Author:** Alberto García Briz
- **Format:** Paperback, 104pp.
- **ISBN-10:** 1-48481-377-4
- **ISBN-13:** 978-1-48481-377-5
- **Publisher/Date:** CreateSpace/2013
- **Website:** [www.createspace.com/4259936](https://www.createspace.com/4259936)
-
-**Description:** Explanations of histogram, levels and curves tools, towards their application for image
improvement and advanced edition (traditional colouring, film simulation, etc.)
-
-## The Book of GIMP
-
-![The Book of GIMP](book_of_gimp.png)
-**Authors:** Olivier Lecarme, Karine Delvare
- **Format:** Paperback, 676pp.
- **ISBN-10:** N/A
- **ISBN-13:** 978-1-59327-383-5
- **Publisher/Date:** No Starch Press/2013
- **Website:** [http://nostarch.com/gimp](http://nostarch.com/gimp)
-
-**Description:** GIMP is a free alternative to Adobe Photoshop with tons of professional-grade features. But
with so many powerful tools and menu options, GIMP can be difficult to master. Whether you're struggling to
get started or trying to master some of GIMP's more complex features, you'll find the answers you're looking
for in The Book of GIMP.
-
-## How to GIMP
-
-![How to GIMP](howtogimp.jpg)
-**Author:** Kat Landreth
- **Format:** PDF ebook
- **ISBN-10:** N/A
- **ISBN-13:** N/A
- **Publisher/Date:** Self-published/May 2013
- **Website:** [http://how-to-gimp.com/gimp-book/](http://how-to-gimp.com/gimp-book/)
-
-**Description:** A beginner's guide to using GIMP for photo editing, and basic graphics like using text on
images. The book starts from the very beginning. You'll work through clearly written tutorials using over 30
high quality practice images to learn everything from drawing simple shapes, to using advanced tools like
layers, and layer masks. You'll learn how to use tools effectively, rather than on memorizing steps in
tutorials. By the end of the book, you'll be ready to follow and adapt online tutorials with ease. You'll
even have the confidence to use GIMP without tutorials.
-
-## Blanco y Negro con The GIMP
-
-![Blanco y Negro con The GIMP](blanco_y_negro_con_gimp.jpg)
-**Author:** Alberto García Briz
- **Format:** Paperback, 232pp.
- **ISBN-10:** 1-47835-391-0
- **ISBN-13:** 978-1-47835-391-1
- **Publisher/Date:** CreateSpace/2012
- **Website:** [www.createspace.com/3954818](https://www.createspace.com/3954818)
-
-**Description:** This book (only available in Spanish) describes how to use free software GIMP for the
conversion of digital pictures to black and white photography. Main methods are discussed and applied in
multiple step-by-step examples.
-
-## GIMP for Absolute Beginners
-
-![GIMP for Absolute Beginners](gimp-for-absolute-beginners-2012.jpg)
-**Authors:** Jan Smith, Roman Joost
- **Format:** Paperback, 352pp.
- **ISBN-10:** 1-43023-168-8
- **ISBN-13:** 978-1-43023-168-4
- **Publisher/Date:** Apress/2012
- **Website:** [www.apress.com/9781430231684](http://www.apress.com/9781430231684)
-
-**Description:** GIMP for Absolute Beginners gives us an easy way to use the power of GIMP, and enjoy
digital photography and graphics without worrying about application features.
-
-## GIMP
-
-![GIMP](gimp_olivier_karine.jpg)
-**Authors:** Olivier Lecarme, Karine Delvare
- **Format:** Hardcover, 732pp.
- **ISBN-10:** 2-74402305-1
- **ISBN-13:** 978-2-74402305-7
- **Publisher/Date:** Pearson Education/April 2011
- **Website:**
[http://www.pearson.fr/livre/?GCOI=27440100358850](http://www.pearson.fr/livre/?GCOI=27440100358850)
-
-**Description:** A complete user manual and a reference to GIMP features that explains basics of digital
imaging, retouching photos, creating animations, preparing pictures for publishing on the Web etc.
-
-## GIMP 2.6 Cookbook
-
-![GIMP 2.6 Cookbook](gimp-2-6-cookbook.png)
-**Author:** Juan Manuel Ferreyra
- **Format:** Paperback, 408pp.
- **ISBN-10:** 1-84951202-7
- **ISBN-13:** 978-1-84951202-2
- **Publisher/Date:** Packt Publishing/March 2011
- **Website:**
[https://www.packtpub.com/gimp-2-6-cookbook/book](https://www.packtpub.com/gimp-2-6-cookbook/book)
-
-**Description:** This book is packed with answers to get you preparing great images with the GIMP
immediately. Even if you are a relative novice to this powerhouse application, the straightforward
instructions will guide you through the tasks to unleash your true creativity without being hindered by the
system.
-
-## Beginning GIMP: From Novice to Professional, Second Edition
-
-![Beginning GIMP: From Novice to Professional, Second
Edition](beginning_gimp_from_novice_to_professional_second_edition.png)
-**Author:** Akkana Peck
- **Format:** Paperback, 584pp.
- **ISBN-10:** 1-43021-070-2
- **ISBN-13:** 978-1-43021-070-2
- **Publisher/Date:** Apress/December 2008
- **Website:** [http://gimpbook.com/](http://gimpbook.com/)
-
-**Description:** A complete guide to image editing with GIMP, beginning with basic photo manipulation
procedures, simple drawing and selection techniques, then proceeding to more advanced concepts such as layer
masks, color adjustment, blending modes, stitching panoramas, image stacking, and writing simple GIMP scripts
and plug-ins. The second edition adds more advanced tutorials and discusses some of the changes in GIMP 2.6\.
-
-## GIMP for Textile Design
-
-![GIMP for Textile Design](gimp_for_textile_design.png)
-**Author:** Frederick L. Chipkin
- **Format:** Spiral-bound, 112pp.
- **ISBN-10:** 0-97273-172-5
- **ISBN-13:** 978-0-97273-172-0
- **Publisher/Date:** Origin inc/2008
- **Website:**
[http://origininc.tripod.com/GIMP/GIMP_BOOK_MAIN/GBOOK.htm](http://origininc.tripod.com/GIMP/GIMP_BOOK_MAIN/GBOOK.htm)
-
-**Description:** The book GIMP for Textile Design is a collection of lessons that will take you from simple
textile design techniques to the more advanced design techniques needed to take on the most challenging
textile design projects. Everything is explained in a simple uniform manner so that nothing is overwhelming
to the textile designer just starting out and so that the more experienced textile designer can grasp key
concepts more quickly.
-
-## The Artist's Guide to GIMP Effects
-
-![The Artist's Guide to GIMP Effects](the_artists_guide_to_gimp_effects.png)
-**Author:** Michael J. Hammel
- **Format:** Paperback, 348pp.
- **ISBN-10:** 1-59327-121-2
- **ISBN-13:** 978-1-59327-153-4
- **Publisher/Date:** No Starch Press/August 2007
- **Website:** [http://www.graphics-muse.org/artistsguide/](http://www.graphics-muse.org/artistsguide/)
-
-**Description:** The Artist's Guide To GIMP Effects is a tutorial filled expedition into the powerful
open-source graphics design tool, the GNU Image Manipulation Program. Tutorials cover the gamut of design
topics, from Web design and Photographic techniques to Advertising and Interface design. The Artist's Guide
To GIMP Effects is the follow-up text to the first book ever published on GIMP, The Artist's Guide to the
GIMP.
-
-## GIMP 2 for Photographers: Image Editing with Open Source Software
-
-![GIMP 2 for Photographers: Image Editing with Open Source Software](gimp_2_for_photographers.png)
-**Author:** Klaus Gölker
- **Format:** Paperback, 200pp.
- **ISBN-10:** 1-93395-203-2
- **ISBN-13:** 978-1-93395-203-1
- **Publisher/Date:** Rocky Nook/November 2006
- **Website:** [http://www.rockynook.com/books/20.html](http://www.rockynook.com/books/20.html)
-
-**Description:** This book has evolved from the classroom materials which the author developed and taught in
courses and workshops on image editing with the GIMP. It covers the basics of image editing and guides the
reader through the functions and tools of the GIMP from simple adjustments to more advanced techniques of
working with layers and masks. The more important editing functions are presented in individual workshops.
Moreover, the book covers the stitching of panoramic images and preparation of high-quality black and white
images.
-
-## Beginning GIMP: From Novice to Professional
-
-![Beginning GIMP: From Novice to Professional](beginning_gimp_from_novice_to_professional.png)
-**Author:** Akkana Peck
- **Format:** Paperback, 552pp.
- **ISBN:** 1-59059-587-4
- **Publisher/Date:** Apress/May 2006
- **Website:** [http://gimpbook.com/](http://gimpbook.com/)
-
-**Description:** A complete guide to image editing with GIMP, beginning with basic photo manipulation
procedures, simple drawing and selection techniques, then proceeding to more advanced concepts such as layer
masks, color adjustment, blending modes, stitching panoramas, image stacking, and writing simple GIMP scripts
and plug-ins. Covers version 2.2 plus a look ahead to 2.4.
-
-## The Gimp 2.2 pour PC, Mac et Linux
-
-![The Gimp 2.2 pour PC, Mac et Linux](the_gimp_2_2_pour_pc_mac_et_linux.png)
-**Author:** Julien Pons
- **Format:** Paperback, 300pp.
- **ISBN:** 2746028565
- **Date:** October 2005
- **Website:** [http://www.julienpons.fr](http://www.julienpons.fr/)
-
-**Description:** An in-depth reference for GIMP that, like the rest of French publisher ENI's Studio Factory
series, is aimed at the professional user. This book covers the interface, GIMP functions, and GIMP concepts
such as layers and drawables, and also includes a chapter for Photoshop users migrating to The GIMP.
-
-## GIMP - Guia do Usuário
-
-![GIMP - Guia do Usuário](guia_do_usuario.png)
-**Author:** André Milani
- **Format:** Paperback, 336pp.
- **ISBN:** 85-7522-077-2
- **Date:** September 2005
- **Website:** [http://www.novatec.com.br/livros/gimp](http://www.novatec.com.br/livros/gimp/)
-
-**Description:** First Brazilian book about GIMP. Features detailed explanations about GIMP and its tools,
how to use layers, and includes some tutorials on web graphics and photo retouching.
-
-## (A la) SOS GIMP
-
-![(A la) SOS GIMP](a_la_sos_gimp.png)
-**Author:** Cédric Gemy
- **Format:** Paperback, 256pp.
- **ISBN:** 2-9521703-1-2
- **Date:** January 2005
- **Website:** n/a
-
-**Description:** This book in French, released under the Free Documentation License, contains loads of tips
and tutorials for GIMP, as well as giving a thorough tour of the main tools and features. It is in its second
edition, and has recently been updated to cover GIMP 2.2.
-
-## Essential GIMP for Web Professionals
-
-![Essential GIMP for Web Professionals](essential_gimp_for_web_professionals.png)
-**Author:** Michael J. Hammel
- **Format:** Paperback, 376pp.
- **ISBN:** 0-130-19114-0
- **Publisher/Date:** Pearson Education/April 2001
- **Website:** [http://authors.phptr.com/essential/gimp/](http://authors.phptr.com/essential/gimp/)
-
-**Description:** This concise, example-rich guide shows Web professionals exactly how to create high-quality
graphics with GIMP. It delivers no-nonsense, practical coverage based on real-world projects you can see and
download from the above mentioned web site. Master layers, selections and masks, text, color management,
drawing, painting, image maps, animation, working from scans, using effects and rendering filters - even
scripting.
-
-## GIMP Pocket Reference
-
-![GIMP Pocket Reference](the_gimp_pocket_reference.png)
-**Author:** Sven Neumann
- **Format:** Paperback, 97pp.
- **ISBN:** 1-565-92731-1
- **Publisher/Date:** O'Reilly & Associates, Incorporated/August 2000
- **Website:**
[http://shop.oreilly.com/product/9781565927315.do](http://shop.oreilly.com/product/9781565927315.do)
-
-**Description:** The GIMP Pocket Reference explains the numerous features of the GNU Image Manipulation
Program - and is the essential guide for designers working in a Linux/Unix environment. This handy reference
covers GIMP version 1.2\. It explains the function of every menu item and offers tips for everyday use. The
GIMP Pocket Reference is available in English, German, Dutch and French versions.
-
-## Grokking the GIMP
-
-![Grokking the GIMP](grokking_the_gimp.png)
-**Author:** Carey Bunks
- **Format:** Paperback, 352pp.
- **ISBN:** 0-735-70924-6
- **Publisher/Date:** Pearson Education/February 2000
- **Website:** [http://gimp-savvy.com/BOOK/index.html](http://gimp-savvy.com/BOOK/index.html)
-
-**Description:** Grokking the GIMP is for the serious user of the GNU Image Manipulation Program, a premiere
digital image editing and painting program. It covers GIMP in depth, and complex tasks are intuitively
presented and explained using an interactive approach. In addition to emphasizing the theory and core
concepts of image manipulation, Grokking the GIMP beautifully illustrates the practical aspects of working
with digital images. This fully 4-color book presents nine major projects and a collection of many smaller
ones that illustrate the core and advanced uses of this powerful open-source application. Numbered steps and
an abundance of color images walk the reader through real-world examples of color correction, image
enhancement, collage, photo montage, rendering, and web-graphics creation. The entire book is available
on-line at the above mentioned website.
-
-## Guerilla Guide to Great Graphics with The GIMP
-
-![Guerilla Guide to Great Graphics with The GIMP](guerilla_guide_to_great_graphics_with_the_gimp.png)
-**Author:** David D. Busch
- **Format:** Paperback, 370pp.
- **ISBN:** 0-7615-2407-X
- **Publisher/Date:** Premier Press (Prima Tech)/January 2000
- **Website:** N/A
-
-**Description:** Guerrilla Guide to Great Graphics with the GIMP shows beginning-to-advanced image designers
creative ways to transform ordinary images into triumphant prizewinners using the most popular graphics
package for Linux. It also shows non-designers how to create or manipulate graphics for many uses. This book
is filled with easy-to-follow techniques and tips for using the advanced features that will spark your
creativity and lead to amazing graphics.
-
-## GIMP - The Official Handbook
-
-![GIMP - The Official Handbook](gimp_the_official_handbook.png)
-**Authors:** Olof S. Kylander, Karin Kylander
- **Format:** Paperback, 895pp.
- **ISBN:** 1-576-10520-2
- **Publisher/Date:** Coriolis Value/November 1999
- **Website:** n/a
-
-**Description:** Comprehensively covers the program by teaching readers all aspects ranging from installing,
to scripting, to working faster and more efficiently through shortcuts. Thoroughly covers one of the most
powerful aspects of GIMP filters, including how to create images invoking Cubism, Van Gogh, embossing,
warping, rippling, glass tile, and fractals. While this book does not teach readers how to be artists, it
offers plenty of examples to inspire new ideas and grab on to the power and versatility of the application.
Gimp: The Official Handbook is written by two Gimp experts and is the most comprehensive source of
information available on this freely distributed image-manipulation program for the Open Source community.
The only book to teach the entire program, including all built-in filters and third-party plug-ins. Beats the
competition by teaching the program from cover to cover. Other books gloss over key features and focus on
learning the program quickly, or ar
e theoretical and provide no practical information on the product.The entire book is available on-line at
the aforementioned website.
-
-## GIMP Essential Reference
-
-![GIMP Essential Reference](gimp_esential_reference.png)
-**Author:** Alex Harford
- **Format:** Paperback, 373pp.
- **ISBN:** 0-735-70911-4
- **Publisher/Date:** Pearson Education/November 1999
- **Website:** N/A
-
-**Description:** Gimp Essential Reference will show users how to quickly become familiar with the advanced
user interface using a table-heavy format that will allow users to find what they're looking for quickly.
Gimp Essential Reference is for users working with GIMP who know what they want to accomplish, but don't know
exactly how to do it.
-
-## The Artists' Guide to the GIMP
-
-![The Artists' Guide to the GIMP](the_artist_guide_to_the_gimp.png)
-**Author:** Michael J. Hammel
- **Format:** Paperback, 340pp.
- **ISBN:** 1-578-31011-3
- **Publisher/Date:** Specialized Systems Consultants, Incorporated/December 1998
- **Website:** [http://www.artistsguidetogimp.com/](http://www.artistsguidetogimp.com/)
-
-**Description:** The Artists' Guide to the GIMP covers all of the basics a new user needs to get started,
from detailed descriptions of Toolbox features to using selections to a complete explanation of Layers and
Channels. Chapters on color functions and drawing and painting methods show how to make the most of this
wonderful alternative to similar applications for other platforms. Several examples of plug-ins high
resolution, four-color glossy prints serve as tutorials and inspiration to any reader. Add to these the
extensive discussions on printing and scanning, and the result is a text that will be an integral part of any
graphic artist's tool chest.
-
-## The Artist's Guide to GIMP, 2nd Edition
-
-![The Artist's Guide to GIMP, 2nd Edition](the_artists_guide_to_gimp_2ed.png)
-**Author:** Michael J. Hammel
- **Format:** Horizontal, 320pp.
- **ISBN-10:** 1593274149
- **ISBN-13:** 978-1-59327-414-6
- **Publisher/Date:** No Starch Press/June 2012
- **Website:** [http://nostarch.com/gimp2](http://nostarch.com/gimp2)
-
-**Description:** The Artist's Guide to GIMP teaches you how to use GIMP without a tedious list of menu paths
and options. Instead, as you follow along with Michael J. Hammel's step-by-step instructions, you'll learn to
produce professional-looking advertisements, apply impressive photographic effects, and design cool logos and
text effects. These extensively illustrated tutorials are perfect for hands-on learning or as templates for
your own artistic experiments.
-
+Title: Books About GIMP
+Date: 2015-08-14T13:58:40-05:00
+Author: Pat David
+Status: hidden
+
+## Das GIMP 2.8-Buch
+
+![Das GIMP 2.8-Buch](gimp-2-8-kay-richter.jpg)
+**Author:** Kay Richter
+ **Format:** eBook, 256pp.
+ **ISBN-13:** ISBN 978-3-86899-857-3
+ **Publisher/Date:** O'Reilly/2013
+ **Website:** [www.oreilly.de/catalog/gimpbuchger/](http://www.oreilly.de/catalog/gimpbuchger/)
+
+**Description:** the book (in German) introduces readers to th basics of using GIMP, from importing to
editing to printing.
+
+## Niveles y Curvas con GIMP
+
+![Niveles y Curvas con GIMP](niveles-y-curvas-con-gimp.jpg)
+**Author:** Alberto García Briz
+ **Format:** Paperback, 104pp.
+ **ISBN-10:** 1-48481-377-4
+ **ISBN-13:** 978-1-48481-377-5
+ **Publisher/Date:** CreateSpace/2013
+ **Website:** [www.createspace.com/4259936](https://www.createspace.com/4259936)
+
+**Description:** Explanations of histogram, levels and curves tools, towards their application for image
improvement and advanced edition (traditional colouring, film simulation, etc.)
+
+## The Book of GIMP
+
+![The Book of GIMP](book_of_gimp.png)
+**Authors:** Olivier Lecarme, Karine Delvare
+ **Format:** Paperback, 676pp.
+ **ISBN-10:** N/A
+ **ISBN-13:** 978-1-59327-383-5
+ **Publisher/Date:** No Starch Press/2013
+ **Website:** [http://nostarch.com/gimp](http://nostarch.com/gimp)
+
+**Description:** GIMP is a free alternative to Adobe Photoshop with tons of professional-grade features. But
with so many powerful tools and menu options, GIMP can be difficult to master. Whether you're struggling to
get started or trying to master some of GIMP's more complex features, you'll find the answers you're looking
for in The Book of GIMP.
+
+## How to GIMP
+
+![How to GIMP](howtogimp.jpg)
+**Author:** Kat Landreth
+ **Format:** PDF ebook
+ **ISBN-10:** N/A
+ **ISBN-13:** N/A
+ **Publisher/Date:** Self-published/May 2013
+ **Website:** [http://how-to-gimp.com/gimp-book/](http://how-to-gimp.com/gimp-book/)
+
+**Description:** A beginner's guide to using GIMP for photo editing, and basic graphics like using text on
images. The book starts from the very beginning. You'll work through clearly written tutorials using over 30
high quality practice images to learn everything from drawing simple shapes, to using advanced tools like
layers, and layer masks. You'll learn how to use tools effectively, rather than on memorizing steps in
tutorials. By the end of the book, you'll be ready to follow and adapt online tutorials with ease. You'll
even have the confidence to use GIMP without tutorials.
+
+## Blanco y Negro con The GIMP
+
+![Blanco y Negro con The GIMP](blanco_y_negro_con_gimp.jpg)
+**Author:** Alberto García Briz
+ **Format:** Paperback, 232pp.
+ **ISBN-10:** 1-47835-391-0
+ **ISBN-13:** 978-1-47835-391-1
+ **Publisher/Date:** CreateSpace/2012
+ **Website:** [www.createspace.com/3954818](https://www.createspace.com/3954818)
+
+**Description:** This book (only available in Spanish) describes how to use free software GIMP for the
conversion of digital pictures to black and white photography. Main methods are discussed and applied in
multiple step-by-step examples.
+
+## GIMP for Absolute Beginners
+
+![GIMP for Absolute Beginners](gimp-for-absolute-beginners-2012.jpg)
+**Authors:** Jan Smith, Roman Joost
+ **Format:** Paperback, 352pp.
+ **ISBN-10:** 1-43023-168-8
+ **ISBN-13:** 978-1-43023-168-4
+ **Publisher/Date:** Apress/2012
+ **Website:** [www.apress.com/9781430231684](http://www.apress.com/9781430231684)
+
+**Description:** GIMP for Absolute Beginners gives us an easy way to use the power of GIMP, and enjoy
digital photography and graphics without worrying about application features.
+
+## GIMP
+
+![GIMP](gimp_olivier_karine.jpg)
+**Authors:** Olivier Lecarme, Karine Delvare
+ **Format:** Hardcover, 732pp.
+ **ISBN-10:** 2-74402305-1
+ **ISBN-13:** 978-2-74402305-7
+ **Publisher/Date:** Pearson Education/April 2011
+ **Website:**
[http://www.pearson.fr/livre/?GCOI=27440100358850](http://www.pearson.fr/livre/?GCOI=27440100358850)
+
+**Description:** A complete user manual and a reference to GIMP features that explains basics of digital
imaging, retouching photos, creating animations, preparing pictures for publishing on the Web etc.
+
+## GIMP 2.6 Cookbook
+
+![GIMP 2.6 Cookbook](gimp-2-6-cookbook.png)
+**Author:** Juan Manuel Ferreyra
+ **Format:** Paperback, 408pp.
+ **ISBN-10:** 1-84951202-7
+ **ISBN-13:** 978-1-84951202-2
+ **Publisher/Date:** Packt Publishing/March 2011
+ **Website:**
[https://www.packtpub.com/gimp-2-6-cookbook/book](https://www.packtpub.com/gimp-2-6-cookbook/book)
+
+**Description:** This book is packed with answers to get you preparing great images with the GIMP
immediately. Even if you are a relative novice to this powerhouse application, the straightforward
instructions will guide you through the tasks to unleash your true creativity without being hindered by the
system.
+
+## Beginning GIMP: From Novice to Professional, Second Edition
+
+![Beginning GIMP: From Novice to Professional, Second
Edition](beginning_gimp_from_novice_to_professional_second_edition.png)
+**Author:** Akkana Peck
+ **Format:** Paperback, 584pp.
+ **ISBN-10:** 1-43021-070-2
+ **ISBN-13:** 978-1-43021-070-2
+ **Publisher/Date:** Apress/December 2008
+ **Website:** [http://gimpbook.com/](http://gimpbook.com/)
+
+**Description:** A complete guide to image editing with GIMP, beginning with basic photo manipulation
procedures, simple drawing and selection techniques, then proceeding to more advanced concepts such as layer
masks, color adjustment, blending modes, stitching panoramas, image stacking, and writing simple GIMP scripts
and plug-ins. The second edition adds more advanced tutorials and discusses some of the changes in GIMP 2.6\.
+
+## GIMP for Textile Design
+
+![GIMP for Textile Design](gimp_for_textile_design.png)
+**Author:** Frederick L. Chipkin
+ **Format:** Spiral-bound, 112pp.
+ **ISBN-10:** 0-97273-172-5
+ **ISBN-13:** 978-0-97273-172-0
+ **Publisher/Date:** Origin inc/2008
+ **Website:**
[http://origininc.tripod.com/GIMP/GIMP_BOOK_MAIN/GBOOK.htm](http://origininc.tripod.com/GIMP/GIMP_BOOK_MAIN/GBOOK.htm)
+
+**Description:** The book GIMP for Textile Design is a collection of lessons that will take you from simple
textile design techniques to the more advanced design techniques needed to take on the most challenging
textile design projects. Everything is explained in a simple uniform manner so that nothing is overwhelming
to the textile designer just starting out and so that the more experienced textile designer can grasp key
concepts more quickly.
+
+## The Artist's Guide to GIMP Effects
+
+![The Artist's Guide to GIMP Effects](the_artists_guide_to_gimp_effects.png)
+**Author:** Michael J. Hammel
+ **Format:** Paperback, 348pp.
+ **ISBN-10:** 1-59327-121-2
+ **ISBN-13:** 978-1-59327-153-4
+ **Publisher/Date:** No Starch Press/August 2007
+ **Website:** [http://www.graphics-muse.org/artistsguide/](http://www.graphics-muse.org/artistsguide/)
+
+**Description:** The Artist's Guide To GIMP Effects is a tutorial filled expedition into the powerful
open-source graphics design tool, the GNU Image Manipulation Program. Tutorials cover the gamut of design
topics, from Web design and Photographic techniques to Advertising and Interface design. The Artist's Guide
To GIMP Effects is the follow-up text to the first book ever published on GIMP, The Artist's Guide to the
GIMP.
+
+## GIMP 2 for Photographers: Image Editing with Open Source Software
+
+![GIMP 2 for Photographers: Image Editing with Open Source Software](gimp_2_for_photographers.png)
+**Author:** Klaus Gölker
+ **Format:** Paperback, 200pp.
+ **ISBN-10:** 1-93395-203-2
+ **ISBN-13:** 978-1-93395-203-1
+ **Publisher/Date:** Rocky Nook/November 2006
+ **Website:** [http://www.rockynook.com/books/20.html](http://www.rockynook.com/books/20.html)
+
+**Description:** This book has evolved from the classroom materials which the author developed and taught in
courses and workshops on image editing with the GIMP. It covers the basics of image editing and guides the
reader through the functions and tools of the GIMP from simple adjustments to more advanced techniques of
working with layers and masks. The more important editing functions are presented in individual workshops.
Moreover, the book covers the stitching of panoramic images and preparation of high-quality black and white
images.
+
+## Beginning GIMP: From Novice to Professional
+
+![Beginning GIMP: From Novice to Professional](beginning_gimp_from_novice_to_professional.png)
+**Author:** Akkana Peck
+ **Format:** Paperback, 552pp.
+ **ISBN:** 1-59059-587-4
+ **Publisher/Date:** Apress/May 2006
+ **Website:** [http://gimpbook.com/](http://gimpbook.com/)
+
+**Description:** A complete guide to image editing with GIMP, beginning with basic photo manipulation
procedures, simple drawing and selection techniques, then proceeding to more advanced concepts such as layer
masks, color adjustment, blending modes, stitching panoramas, image stacking, and writing simple GIMP scripts
and plug-ins. Covers version 2.2 plus a look ahead to 2.4.
+
+## The Gimp 2.2 pour PC, Mac et Linux
+
+![The Gimp 2.2 pour PC, Mac et Linux](the_gimp_2_2_pour_pc_mac_et_linux.png)
+**Author:** Julien Pons
+ **Format:** Paperback, 300pp.
+ **ISBN:** 2746028565
+ **Date:** October 2005
+ **Website:** [http://www.julienpons.fr](http://www.julienpons.fr/)
+
+**Description:** An in-depth reference for GIMP that, like the rest of French publisher ENI's Studio Factory
series, is aimed at the professional user. This book covers the interface, GIMP functions, and GIMP concepts
such as layers and drawables, and also includes a chapter for Photoshop users migrating to The GIMP.
+
+## GIMP - Guia do Usuário
+
+![GIMP - Guia do Usuário](guia_do_usuario.png)
+**Author:** André Milani
+ **Format:** Paperback, 336pp.
+ **ISBN:** 85-7522-077-2
+ **Date:** September 2005
+ **Website:** [http://www.novatec.com.br/livros/gimp](http://www.novatec.com.br/livros/gimp/)
+
+**Description:** First Brazilian book about GIMP. Features detailed explanations about GIMP and its tools,
how to use layers, and includes some tutorials on web graphics and photo retouching.
+
+## (A la) SOS GIMP
+
+![(A la) SOS GIMP](a_la_sos_gimp.png)
+**Author:** Cédric Gemy
+ **Format:** Paperback, 256pp.
+ **ISBN:** 2-9521703-1-2
+ **Date:** January 2005
+ **Website:** n/a
+
+**Description:** This book in French, released under the Free Documentation License, contains loads of tips
and tutorials for GIMP, as well as giving a thorough tour of the main tools and features. It is in its second
edition, and has recently been updated to cover GIMP 2.2.
+
+## Essential GIMP for Web Professionals
+
+![Essential GIMP for Web Professionals](essential_gimp_for_web_professionals.png)
+**Author:** Michael J. Hammel
+ **Format:** Paperback, 376pp.
+ **ISBN:** 0-130-19114-0
+ **Publisher/Date:** Pearson Education/April 2001
+ **Website:** [http://authors.phptr.com/essential/gimp/](http://authors.phptr.com/essential/gimp/)
+
+**Description:** This concise, example-rich guide shows Web professionals exactly how to create high-quality
graphics with GIMP. It delivers no-nonsense, practical coverage based on real-world projects you can see and
download from the above mentioned web site. Master layers, selections and masks, text, color management,
drawing, painting, image maps, animation, working from scans, using effects and rendering filters - even
scripting.
+
+## GIMP Pocket Reference
+
+![GIMP Pocket Reference](the_gimp_pocket_reference.png)
+**Author:** Sven Neumann
+ **Format:** Paperback, 97pp.
+ **ISBN:** 1-565-92731-1
+ **Publisher/Date:** O'Reilly & Associates, Incorporated/August 2000
+ **Website:**
[http://shop.oreilly.com/product/9781565927315.do](http://shop.oreilly.com/product/9781565927315.do)
+
+**Description:** The GIMP Pocket Reference explains the numerous features of the GNU Image Manipulation
Program - and is the essential guide for designers working in a Linux/Unix environment. This handy reference
covers GIMP version 1.2\. It explains the function of every menu item and offers tips for everyday use. The
GIMP Pocket Reference is available in English, German, Dutch and French versions.
+
+## Grokking the GIMP
+
+![Grokking the GIMP](grokking_the_gimp.png)
+**Author:** Carey Bunks
+ **Format:** Paperback, 352pp.
+ **ISBN:** 0-735-70924-6
+ **Publisher/Date:** Pearson Education/February 2000
+ **Website:** [http://gimp-savvy.com/BOOK/index.html](http://gimp-savvy.com/BOOK/index.html)
+
+**Description:** Grokking the GIMP is for the serious user of the GNU Image Manipulation Program, a premiere
digital image editing and painting program. It covers GIMP in depth, and complex tasks are intuitively
presented and explained using an interactive approach. In addition to emphasizing the theory and core
concepts of image manipulation, Grokking the GIMP beautifully illustrates the practical aspects of working
with digital images. This fully 4-color book presents nine major projects and a collection of many smaller
ones that illustrate the core and advanced uses of this powerful open-source application. Numbered steps and
an abundance of color images walk the reader through real-world examples of color correction, image
enhancement, collage, photo montage, rendering, and web-graphics creation. The entire book is available
on-line at the above mentioned website.
+
+## Guerilla Guide to Great Graphics with The GIMP
+
+![Guerilla Guide to Great Graphics with The GIMP](guerilla_guide_to_great_graphics_with_the_gimp.png)
+**Author:** David D. Busch
+ **Format:** Paperback, 370pp.
+ **ISBN:** 0-7615-2407-X
+ **Publisher/Date:** Premier Press (Prima Tech)/January 2000
+ **Website:** N/A
+
+**Description:** Guerrilla Guide to Great Graphics with the GIMP shows beginning-to-advanced image designers
creative ways to transform ordinary images into triumphant prizewinners using the most popular graphics
package for Linux. It also shows non-designers how to create or manipulate graphics for many uses. This book
is filled with easy-to-follow techniques and tips for using the advanced features that will spark your
creativity and lead to amazing graphics.
+
+## GIMP - The Official Handbook
+
+![GIMP - The Official Handbook](gimp_the_official_handbook.png)
+**Authors:** Olof S. Kylander, Karin Kylander
+ **Format:** Paperback, 895pp.
+ **ISBN:** 1-576-10520-2
+ **Publisher/Date:** Coriolis Value/November 1999
+ **Website:** n/a
+
+**Description:** Comprehensively covers the program by teaching readers all aspects ranging from installing,
to scripting, to working faster and more efficiently through shortcuts. Thoroughly covers one of the most
powerful aspects of GIMP filters, including how to create images invoking Cubism, Van Gogh, embossing,
warping, rippling, glass tile, and fractals. While this book does not teach readers how to be artists, it
offers plenty of examples to inspire new ideas and grab on to the power and versatility of the application.
Gimp: The Official Handbook is written by two Gimp experts and is the most comprehensive source of
information available on this freely distributed image-manipulation program for the Open Source community.
The only book to teach the entire program, including all built-in filters and third-party plug-ins. Beats the
competition by teaching the program from cover to cover. Other books gloss over key features and focus on
learning the program quickly, or ar
e theoretical and provide no practical information on the product.The entire book is available on-line at
the aforementioned website.
+
+## GIMP Essential Reference
+
+![GIMP Essential Reference](gimp_esential_reference.png)
+**Author:** Alex Harford
+ **Format:** Paperback, 373pp.
+ **ISBN:** 0-735-70911-4
+ **Publisher/Date:** Pearson Education/November 1999
+ **Website:** N/A
+
+**Description:** Gimp Essential Reference will show users how to quickly become familiar with the advanced
user interface using a table-heavy format that will allow users to find what they're looking for quickly.
Gimp Essential Reference is for users working with GIMP who know what they want to accomplish, but don't know
exactly how to do it.
+
+## The Artists' Guide to the GIMP
+
+![The Artists' Guide to the GIMP](the_artist_guide_to_the_gimp.png)
+**Author:** Michael J. Hammel
+ **Format:** Paperback, 340pp.
+ **ISBN:** 1-578-31011-3
+ **Publisher/Date:** Specialized Systems Consultants, Incorporated/December 1998
+ **Website:** [http://www.artistsguidetogimp.com/](http://www.artistsguidetogimp.com/)
+
+**Description:** The Artists' Guide to the GIMP covers all of the basics a new user needs to get started,
from detailed descriptions of Toolbox features to using selections to a complete explanation of Layers and
Channels. Chapters on color functions and drawing and painting methods show how to make the most of this
wonderful alternative to similar applications for other platforms. Several examples of plug-ins high
resolution, four-color glossy prints serve as tutorials and inspiration to any reader. Add to these the
extensive discussions on printing and scanning, and the result is a text that will be an integral part of any
graphic artist's tool chest.
+
+## The Artist's Guide to GIMP, 2nd Edition
+
+![The Artist's Guide to GIMP, 2nd Edition](the_artists_guide_to_gimp_2ed.png)
+**Author:** Michael J. Hammel
+ **Format:** Horizontal, 320pp.
+ **ISBN-10:** 1593274149
+ **ISBN-13:** 978-1-59327-414-6
+ **Publisher/Date:** No Starch Press/June 2012
+ **Website:** [http://nostarch.com/gimp2](http://nostarch.com/gimp2)
+
+**Description:** The Artist's Guide to GIMP teaches you how to use GIMP without a tedious list of menu paths
and options. Instead, as you follow along with Michael J. Hammel's step-by-step instructions, you'll learn to
produce professional-looking advertisements, apply impressive photographic effects, and design cool logos and
text effects. These extensively illustrated tutorials are perfect for hands-on learning or as templates for
your own artistic experiments.
+
diff --git a/content/bugs/howtos/bugzilla.md b/content/bugs/howtos/bugzilla.md
index b3e5a9c..185e00b 100644
--- a/content/bugs/howtos/bugzilla.md
+++ b/content/bugs/howtos/bugzilla.md
@@ -1,65 +1,65 @@
-Title: Eek! A Bug!
-Date: 2015-08-17T11:09:31-05:00
-Modified: 2015-08-17T11:09:40-05:00
-Authors: Pat David
-Status: hidden
-
-
-## or How To Report GIMP Bugs
-
-If you find a bug or think you find a bug, it is very important to report it. If the developers don't know
it is broken (or might be broken), they can't fix it. So there you are at your computer trying to do
something with GIMP and it freaks out at you. It can be a frightening experience at times.
-
-### First, Next, Third
-
-First: Get out a piece of paper or open a text file and scribble down everything you can remember about what
you were doing when it happened. Also write down the exact wording of any error messages you received.
-
-Next: Go away and yell and scream and do whatever you need to do to relax again. Your next step will be to
brave Bugzilla, the GNOME bug tracker. It is used to track bug reports and requests for enhancements for GIMP
and <span class="help" title="the GIMP
- ToolKit">GTK+</span> (see also [why we are using Bugzilla](/bugs/why_bugzilla.html)).
-
-Third: Check to see if your bug has been reported yet. Go to the [Current Bug
List](http://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&form_name=query)
to see if something that looks like your bug has been reported yet. Don't worry if it has, you can still
help. See the section: [Enhancing Bug Reports](#enhance). If you can't find something that sounds like your
bug there, you will need to report it.
-
-## Getting Ready to Report and Reporting a Bug
-
-The goal of the following is to give the developers as much information about what goes wrong as possible.
This helps them find out what needs to be fixed.
-
-### The Steps
-
-1. Use <kbd>gimp --version</kbd> or the about dialog to check your GIMP version. Next check with
[www.gimp.org](//www.gimp.org/) to see what the most recent GIMP release is. If your GIMP is old, update then
try to to reproduce the bug. Your bug may have been fixed in the most recent release. If you are running GIMP
from GIT, update and and recompile.
-
-2. Attempt to reproduce the problem. Go do what you were doing when it happened and see if you can do it
again.
-
- If using GIMP for GNU/Linux, start the program from a terminal with the command <kbd>gimp</kbd>.
Sometimes the program will output error messages that can help. This is especially important if GIMP crashes
completely without warning. After reproducing the bug, copy the error messages from your terminal into
somewhere where you can save them for the bug report. It is better to give too much information than not
enough.
-
- To narrow down the exact cause of the problem, attempt to reproduce it in other ways. Prepare yourself
to explain how to reproduce it in your bug report. If you are running GIMP in another language, try
[switching your GIMP to English](http://docs.gimp.org/en/gimp-fire-up.html#gimp-concepts-running-language) so
you can report menu items exactly with the English menu item name. It helps - developers generally understand
English). If you cannot reproduce the bug, assume it was some weird freak event and don't report it. If it
recurs, consult with your appropriate [user mailing list](/mail_lists.html). Perhaps someone else can find
the key to reproducing it.
-
-3. Prepare to face the horror. Go to [bugzilla.gnome.org](http://bugzilla.gnome.org/). If you don't have a
login yet, follow the directions to create one. The reason to do this and report a bug with your e-mail
address is so the developers can contact you if they have any questions. That way if we miss some useful
tidbit of debugging information, they can tell you what to do to get it. Log in.
-
-4. Select "Enter a New Bug Report". From the list of products provided, select GIMP. This opens the actual
entry form.
-
-5. Here you have to tell the developers everything about your system, your version of GIMP, and your bug.
Just do your best to tell them about it. A crappy bug report is better than no report at all, but if you
write down everything you can clearly, you will create a decent bug report.
-
- 1. Select the "version" that corresponds with the version of GIMP in which you found the bug. It is the
information you got with <kbd>gimp --version</kbd>.
-
- 2. Select the appropriate "component". If you don't know what component it is, submit the bug under
General. Descriptions of the components are
[available](http://bugzilla.gnome.org/describecomponents.cgi?product=GIMP).
-
- 3. Classify the "severity" of your bug. If the bug causes GIMP to crash totally or do other really ucky
things so you can't use the program at all, classify it as critical. If it completely disables some part of
GIMP, classify it as major (for example, keeps you from using a tool). Most bugs are "normal". If you don't
know what severity to use, call it "normal". Trivial bugs are annoying but don't really keep you from using
the program. Cosmetic bugs are things like spelling errors or UI (User Interface, "the look and feel")
issues. Don't worry if you choose the wrong severity. The people getting your bug report will adjust it.
Don't mark it higher than it really is just to get their attention.
-
- 4. Select your "operating system". Bugs on [Microsoft Windows](/windows/), [GNU/Linux GIMP](/unix/) or
[OS X](/macintosh/) are not always identical. It would be annoying to get a GNU/Linux GIMP developer trying
to reproduce a OS X-specific bug. It is also useful to list the desktop or window manager you are using.
Sometimes a problem is caused by an interaction between the two. It won't always be relevant, but it is good
to get into the habit of listing it anyway.
-
- 5. Leave "Assigned to:" blank. Bugzilla will do that automatically. Only worry about CC: if you want to
send a copy of your bug report to someone else.
-
- 6. For "Summary", write a brief description of your bug. This summary will help other users see if
their bug might be like your bug. Write something that would help you if you were looking for a bug like
yours.
-
- 7. "Description" is the hard part. It is the actual bug report. First provide the detailed description
of your bug: a brief overview of when it happened and exactly what went wrong (including error messages).
Next, describe step-by-step how to reproduce the bug. Use the exact name of menu items. Describe tools,
windows, and clicks as precisely as possible. If they can't reproduce the bug, it will be very hard for them
to fix it. Last, tell them anything else you can think of that might be relevant. This could include recently
installed programs or hardware that might interfere with GIMP.
-
- Finally, please add the output you get from running <kbd>gimp --version --verbose</kbd> to your bug
report.
-
-## <a name="enhance"></a>Enhancing Bug Reports
-
-If someone has already reported a bug like yours, read the bug report carefully. Read through all the
additional comments. Make sure every bit of information you know about the bug is in there. If your version
is different or you had a slightly different experience with the bug, add a comment providing your
information. Check the status of the bug carefully. If it is marked "NEEDINFO", see if you can provide the
information needed. Do not add a "me too" comment unless your comment provides additional information that
might be helpful for the developer.
-
-If you have provided a bug report and later get more information (like a more specific error message or
fancy stuff like a trace), add a comment to your original bug with that information. It is especially
important to add a comment if you somehow resolve your bug. For example, you update something else on your
system and the bug no longer appears. In that case, add a comment describing what you updated from what
version to what version that resolved the bug.
-
-## The Wait Patiently Part
-
-*Whee!!* You survived! If you managed to get through all this and submit your bug report, be happy. Be
proud. You will later get e-mails about your bug. It might include a request for more information. If you get
something that says your bug is not a bug, do not be discouraged from reporting in the future. Next time it
might be. Submitting careful bug reports and providing additional information where possible helps make GIMP
better. The day will come where you submit a bug and later get an e-mail that says your bug is "FIXED" or
"RESOLVED". Then you will know that some developer out there found your bug, reproduced it, and fixed it.
+Title: Eek! A Bug!
+Date: 2015-08-17T11:09:31-05:00
+Modified: 2015-08-17T11:09:40-05:00
+Authors: Pat David
+Status: hidden
+
+
+## or How To Report GIMP Bugs
+
+If you find a bug or think you find a bug, it is very important to report it. If the developers don't know
it is broken (or might be broken), they can't fix it. So there you are at your computer trying to do
something with GIMP and it freaks out at you. It can be a frightening experience at times.
+
+### First, Next, Third
+
+First: Get out a piece of paper or open a text file and scribble down everything you can remember about what
you were doing when it happened. Also write down the exact wording of any error messages you received.
+
+Next: Go away and yell and scream and do whatever you need to do to relax again. Your next step will be to
brave Bugzilla, the GNOME bug tracker. It is used to track bug reports and requests for enhancements for GIMP
and <span class="help" title="the GIMP
+ ToolKit">GTK+</span> (see also [why we are using Bugzilla](/bugs/why_bugzilla.html)).
+
+Third: Check to see if your bug has been reported yet. Go to the [Current Bug
List](http://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&form_name=query)
to see if something that looks like your bug has been reported yet. Don't worry if it has, you can still
help. See the section: [Enhancing Bug Reports](#enhance). If you can't find something that sounds like your
bug there, you will need to report it.
+
+## Getting Ready to Report and Reporting a Bug
+
+The goal of the following is to give the developers as much information about what goes wrong as possible.
This helps them find out what needs to be fixed.
+
+### The Steps
+
+1. Use <kbd>gimp --version</kbd> or the about dialog to check your GIMP version. Next check with
[www.gimp.org](//www.gimp.org/) to see what the most recent GIMP release is. If your GIMP is old, update then
try to to reproduce the bug. Your bug may have been fixed in the most recent release. If you are running GIMP
from GIT, update and and recompile.
+
+2. Attempt to reproduce the problem. Go do what you were doing when it happened and see if you can do it
again.
+
+ If using GIMP for GNU/Linux, start the program from a terminal with the command <kbd>gimp</kbd>.
Sometimes the program will output error messages that can help. This is especially important if GIMP crashes
completely without warning. After reproducing the bug, copy the error messages from your terminal into
somewhere where you can save them for the bug report. It is better to give too much information than not
enough.
+
+ To narrow down the exact cause of the problem, attempt to reproduce it in other ways. Prepare yourself
to explain how to reproduce it in your bug report. If you are running GIMP in another language, try
[switching your GIMP to English](http://docs.gimp.org/en/gimp-fire-up.html#gimp-concepts-running-language) so
you can report menu items exactly with the English menu item name. It helps - developers generally understand
English). If you cannot reproduce the bug, assume it was some weird freak event and don't report it. If it
recurs, consult with your appropriate [user mailing list](/mail_lists.html). Perhaps someone else can find
the key to reproducing it.
+
+3. Prepare to face the horror. Go to [bugzilla.gnome.org](http://bugzilla.gnome.org/). If you don't have a
login yet, follow the directions to create one. The reason to do this and report a bug with your e-mail
address is so the developers can contact you if they have any questions. That way if we miss some useful
tidbit of debugging information, they can tell you what to do to get it. Log in.
+
+4. Select "Enter a New Bug Report". From the list of products provided, select GIMP. This opens the actual
entry form.
+
+5. Here you have to tell the developers everything about your system, your version of GIMP, and your bug.
Just do your best to tell them about it. A crappy bug report is better than no report at all, but if you
write down everything you can clearly, you will create a decent bug report.
+
+ 1. Select the "version" that corresponds with the version of GIMP in which you found the bug. It is the
information you got with <kbd>gimp --version</kbd>.
+
+ 2. Select the appropriate "component". If you don't know what component it is, submit the bug under
General. Descriptions of the components are
[available](http://bugzilla.gnome.org/describecomponents.cgi?product=GIMP).
+
+ 3. Classify the "severity" of your bug. If the bug causes GIMP to crash totally or do other really ucky
things so you can't use the program at all, classify it as critical. If it completely disables some part of
GIMP, classify it as major (for example, keeps you from using a tool). Most bugs are "normal". If you don't
know what severity to use, call it "normal". Trivial bugs are annoying but don't really keep you from using
the program. Cosmetic bugs are things like spelling errors or UI (User Interface, "the look and feel")
issues. Don't worry if you choose the wrong severity. The people getting your bug report will adjust it.
Don't mark it higher than it really is just to get their attention.
+
+ 4. Select your "operating system". Bugs on [Microsoft Windows](/windows/), [GNU/Linux GIMP](/unix/) or
[OS X](/macintosh/) are not always identical. It would be annoying to get a GNU/Linux GIMP developer trying
to reproduce a OS X-specific bug. It is also useful to list the desktop or window manager you are using.
Sometimes a problem is caused by an interaction between the two. It won't always be relevant, but it is good
to get into the habit of listing it anyway.
+
+ 5. Leave "Assigned to:" blank. Bugzilla will do that automatically. Only worry about CC: if you want to
send a copy of your bug report to someone else.
+
+ 6. For "Summary", write a brief description of your bug. This summary will help other users see if
their bug might be like your bug. Write something that would help you if you were looking for a bug like
yours.
+
+ 7. "Description" is the hard part. It is the actual bug report. First provide the detailed description
of your bug: a brief overview of when it happened and exactly what went wrong (including error messages).
Next, describe step-by-step how to reproduce the bug. Use the exact name of menu items. Describe tools,
windows, and clicks as precisely as possible. If they can't reproduce the bug, it will be very hard for them
to fix it. Last, tell them anything else you can think of that might be relevant. This could include recently
installed programs or hardware that might interfere with GIMP.
+
+ Finally, please add the output you get from running <kbd>gimp --version --verbose</kbd> to your bug
report.
+
+## <a name="enhance"></a>Enhancing Bug Reports
+
+If someone has already reported a bug like yours, read the bug report carefully. Read through all the
additional comments. Make sure every bit of information you know about the bug is in there. If your version
is different or you had a slightly different experience with the bug, add a comment providing your
information. Check the status of the bug carefully. If it is marked "NEEDINFO", see if you can provide the
information needed. Do not add a "me too" comment unless your comment provides additional information that
might be helpful for the developer.
+
+If you have provided a bug report and later get more information (like a more specific error message or
fancy stuff like a trace), add a comment to your original bug with that information. It is especially
important to add a comment if you somehow resolve your bug. For example, you update something else on your
system and the bug no longer appears. In that case, add a comment describing what you updated from what
version to what version that resolved the bug.
+
+## The Wait Patiently Part
+
+*Whee!!* You survived! If you managed to get through all this and submit your bug report, be happy. Be
proud. You will later get e-mails about your bug. It might include a request for more information. If you get
something that says your bug is not a bug, do not be discouraged from reporting in the future. Next time it
might be. Submitting careful bug reports and providing additional information where possible helps make GIMP
better. The day will come where you submit a bug and later get an e-mail that says your bug is "FIXED" or
"RESOLVED". Then you will know that some developer out there found your bug, reproduced it, and fixed it.
diff --git a/content/bugs/howtos/submit-patch.md b/content/bugs/howtos/submit-patch.md
index 4e3bd75..5bb8586 100644
--- a/content/bugs/howtos/submit-patch.md
+++ b/content/bugs/howtos/submit-patch.md
@@ -1,95 +1,95 @@
-Title: How to Create and Submit a Patch
-Date: 2015-08-17T11:09:31-05:00
-Modified: 2015-08-17T11:09:40-05:00
-Authors: Pat David
-Status: hidden
-
-
-## Introduction
-
-A patch is exactly what the word says: a small piece of code used to repair a breach. It is normally a plain
text file containing only the differences between the current version of the code and the fixed version.
-
-## Generating a Patch
-
-### With git
-
-The preferred way of creating a patch is to create it against current git. The ensures that the patches
works with the latest edition of the source code and makes it easier for the developers to apply the patch.
-
-Clone the git repository which is
-
- git clone git://git.gnome.org/gimp
-
- Create commits that fixes the problem. For small problems it will only be a single commit. Be sure to
provide your name and email in the commits - you can [set up your git
repository](http://live.gnome.org/Git/Developers#head-2ad4a3239be27d5312d1be06debb39d4550baaf8) to do this
for you. Please make sure to provide useful commit messages; you may refer to [GNOME's
guidelines](http://live.gnome.org/Git/CommitMessages).
-
-Now that you have commits that fixes the problem, create patches by doing
-
- git format-patch origin/master
-
- This will give you patch files in the form of git commits with names like
-
- 0001-plug-ins-Use-string-literal-as-format-in-metadata-p.patch
-
- We prefer to have the patches attached to bug reports in Bugzilla (see below) but it is also fine to send
them to the mailing list if they are reasonably small.
-
-### Against the Latest Release
-
-If you do not have access to git you can generate the patch against the latest release.
-
-To generate the patch you will need two copies of the source code: one that is unmodified and one containing
your changes to the source. Start by downloading the source code of the latest release, extract it and make a
copy of the entire source directory. After you have made your changes to one of the source directories and
made sure it compiles and works as expected, you can create the patch file using the command:
-
-`diff -rup /path/to/unmodified/source /path/to/modified/source > patchfile.patch`
-
-To summarize the steps:
-
-* Download the source code of the latest release
-* Extract the source code
-* Make a copy of the source code directory
-* Apply your changes to the copy of the source code
-* Re-compile and make sure it works as expected
-* Do a `make clean` to remove files generated during build
-* Generate the patch file using
- `diff -rup /path/to/unmodified/source /path/to/modified/source > patchfile.patch`
-* Examine the resulting .patch file to make sure it contains only the intended changes
-* Submit the patch using Bugzilla, see below
-
-## Using Bugzilla
-
-### Closing a bug patch
-
-The best way to submit a patch to the GIMP development is to send it to Bugzilla and inform the rest of the
team what the patch is doing:
-
-* Is it closing bugs?
-* Is it a enhancement?
-* What are the changes in the code?
-* Are there any know problems with the patch?
-
-If you have a patch that is closing bugs then you can attach the patch to the bug/bugs explaining what the
patch is doing. You can also inform the gimp-developer mailing list about the closed bug but avoid to attach
the patch to the mail sent to the list, instead put the bug links in the mail where the attached patch is
located.
-
-1. Test the patch locally on your own machine and look if it closes the bug there.
-2. Find the bug it is closing in the [Open
bugs](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
list.
-3. Attach the patch to the bug report.
-4. Explain what the patch is doing and if there might be any problems with the patch.
-5. If you want to send a mail to the gimp-developer list and explain it there also. Remember to have the
bug number or even better the link to the bug in the mail. Avoid attaching the patch to the mail.
-
-Now you just have to wait for the developers and maintainers to look at the patch and see if this is really
closing the bug and if it might open new bugs. If everything is fine it will be implemented in a release done
soon either stable or development version.
-
-#### How about enhancements?
-
-Start a new bug report, mark it as enhancement and put the patch in that report on Bugzilla. This will give
developers a good explanation of why you did the patch and how the patch changes GIMP source or adds new
things to it. The only thing you need to add to the report is that it is an enhancement and explain the patch
a little bit. A simple way to this is to:
-
-1. Go to [Submit a new bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP).
-2. Fire up a new report and select enhancement instead of the others used by normal bug reporting.
-3. Attach the patch and explain what you wanted to get going with the help of this patch.
-4. Remember to explain the purpose of the patch and who might want to use this enhancement.
-
-Thats it! You have done a patch reporting enhancement all that is left is for the developers to look at the
report and the patch. They might get even better ideas of how to implement this with the help of the patch
you sent.
-
-### Remember to
-
-* use the same coding style, see file HACKING
-* avoid sending the patch as an attachment to the mailing lists.
-* explain what the patch is doing to GIMP.
-* report the bugs that the patch is closing.
-* always test the patch before submitting it.
-* write what version it is tested on. stable? development?
-
+Title: How to Create and Submit a Patch
+Date: 2015-08-17T11:09:31-05:00
+Modified: 2015-08-17T11:09:40-05:00
+Authors: Pat David
+Status: hidden
+
+
+## Introduction
+
+A patch is exactly what the word says: a small piece of code used to repair a breach. It is normally a plain
text file containing only the differences between the current version of the code and the fixed version.
+
+## Generating a Patch
+
+### With git
+
+The preferred way of creating a patch is to create it against current git. The ensures that the patches
works with the latest edition of the source code and makes it easier for the developers to apply the patch.
+
+Clone the git repository which is
+
+ git clone git://git.gnome.org/gimp
+
+ Create commits that fixes the problem. For small problems it will only be a single commit. Be sure to
provide your name and email in the commits - you can [set up your git
repository](http://live.gnome.org/Git/Developers#head-2ad4a3239be27d5312d1be06debb39d4550baaf8) to do this
for you. Please make sure to provide useful commit messages; you may refer to [GNOME's
guidelines](http://live.gnome.org/Git/CommitMessages).
+
+Now that you have commits that fixes the problem, create patches by doing
+
+ git format-patch origin/master
+
+ This will give you patch files in the form of git commits with names like
+
+ 0001-plug-ins-Use-string-literal-as-format-in-metadata-p.patch
+
+ We prefer to have the patches attached to bug reports in Bugzilla (see below) but it is also fine to send
them to the mailing list if they are reasonably small.
+
+### Against the Latest Release
+
+If you do not have access to git you can generate the patch against the latest release.
+
+To generate the patch you will need two copies of the source code: one that is unmodified and one containing
your changes to the source. Start by downloading the source code of the latest release, extract it and make a
copy of the entire source directory. After you have made your changes to one of the source directories and
made sure it compiles and works as expected, you can create the patch file using the command:
+
+`diff -rup /path/to/unmodified/source /path/to/modified/source > patchfile.patch`
+
+To summarize the steps:
+
+* Download the source code of the latest release
+* Extract the source code
+* Make a copy of the source code directory
+* Apply your changes to the copy of the source code
+* Re-compile and make sure it works as expected
+* Do a `make clean` to remove files generated during build
+* Generate the patch file using
+ `diff -rup /path/to/unmodified/source /path/to/modified/source > patchfile.patch`
+* Examine the resulting .patch file to make sure it contains only the intended changes
+* Submit the patch using Bugzilla, see below
+
+## Using Bugzilla
+
+### Closing a bug patch
+
+The best way to submit a patch to the GIMP development is to send it to Bugzilla and inform the rest of the
team what the patch is doing:
+
+* Is it closing bugs?
+* Is it a enhancement?
+* What are the changes in the code?
+* Are there any know problems with the patch?
+
+If you have a patch that is closing bugs then you can attach the patch to the bug/bugs explaining what the
patch is doing. You can also inform the gimp-developer mailing list about the closed bug but avoid to attach
the patch to the mail sent to the list, instead put the bug links in the mail where the attached patch is
located.
+
+1. Test the patch locally on your own machine and look if it closes the bug there.
+2. Find the bug it is closing in the [Open
bugs](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
list.
+3. Attach the patch to the bug report.
+4. Explain what the patch is doing and if there might be any problems with the patch.
+5. If you want to send a mail to the gimp-developer list and explain it there also. Remember to have the
bug number or even better the link to the bug in the mail. Avoid attaching the patch to the mail.
+
+Now you just have to wait for the developers and maintainers to look at the patch and see if this is really
closing the bug and if it might open new bugs. If everything is fine it will be implemented in a release done
soon either stable or development version.
+
+#### How about enhancements?
+
+Start a new bug report, mark it as enhancement and put the patch in that report on Bugzilla. This will give
developers a good explanation of why you did the patch and how the patch changes GIMP source or adds new
things to it. The only thing you need to add to the report is that it is an enhancement and explain the patch
a little bit. A simple way to this is to:
+
+1. Go to [Submit a new bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP).
+2. Fire up a new report and select enhancement instead of the others used by normal bug reporting.
+3. Attach the patch and explain what you wanted to get going with the help of this patch.
+4. Remember to explain the purpose of the patch and who might want to use this enhancement.
+
+Thats it! You have done a patch reporting enhancement all that is left is for the developers to look at the
report and the patch. They might get even better ideas of how to implement this with the help of the patch
you sent.
+
+### Remember to
+
+* use the same coding style, see file HACKING
+* avoid sending the patch as an attachment to the mailing lists.
+* explain what the patch is doing to GIMP.
+* report the bugs that the patch is closing.
+* always test the patch before submitting it.
+* write what version it is tested on. stable? development?
+
diff --git a/content/bugs/index.md b/content/bugs/index.md
index 59d83fd..6d9fc71 100644
--- a/content/bugs/index.md
+++ b/content/bugs/index.md
@@ -1,77 +1,77 @@
-Title: Bugs
-Date: 2015-08-17T11:09:31-05:00
-Modified: 2015-08-17T11:09:40-05:00
-Authors: Pat David
-Status: hidden
-
-
-Making good bug reports is a great way to help increase the software quality of GIMP. A good bug report is a
bug report that provides unambigous step-by-step instructions on how to reproduce the bug, what result that
is expected, and what the actual result it. Good bug reports makes it easy for the developers to reproduce
and fix the bug.
-
-Related to bug reports are enhancement requests. An enhancement request should never be filed without prior
discussion on the gimp-developer [mailing list](/mail_lists.html). This is to make sure that the enhancement
requests that are filed are well-specified and aligned with the overall goals the developers have for GIMP.
-
-More information about Bugzilla, and bug hunting in general, can be found at
[http://wiki.gimp.org/](http://wiki.gimp.org/). See also [why we are using Bugzilla](why_bugzilla.html) to
handle bug reports. The rest of this page contains more detailed information regarding bug reports.
-
-## Bug How Tos
-
-Since correctly submitting a bug report requires you to use tools you may have not used previously, we have
created two documents. The first helps you to learn Bugzilla, which is the bug system used by GIMP developers
to track bug reports. If you are fixing a problem yourself, the second document shows you how to properly
create and submit a patch.
-
-* [How To Bugzilla](/bugs/howtos/bugzilla.html)
-* [How To Create and Submit a Patch](/bugs/howtos/submit-patch.html)
-
-## Bug Lists
-
-Below are different links into Bugzilla which show you lists of open and closed bugs. You can also search
manually, but these links are often more convienient. With the help of the lists below you should be able to
see if the bug you have found has already been reported. If it has been reported, and you have additional
information, please add a comment with the additional information!
-
-### GIMP bugs
-
-* [List of open bugs
(all)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [List of open bugs (all excluding enhancement
requests)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial)
-
-* [List of bugs that are easy to
fix](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&keywords=gnome-love)
-
-* [List of closed bugs (The past
week)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=RESOLVED&bug_status=CLOSED&changedin=7)
-* [List of fixed bugs since last
release](https://bugzilla.gnome.org/buglist.cgi?chfieldto=Now;query_format=advanced;order=Importance;chfieldfrom=2013-11-28;bug_status=RESOLVED;resolution=FIXED;product=GIMP;classification=Other)
-
-#### By severity
-
-* [List of open bugs (blocker and
critical)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical)
-* [List of open bugs
(major)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=major)
-* [List of open bugs
(normal)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=normal)
-* [List of open bugs (minor and
trivial)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=minor&bug_severity=trivial)
-* [List of open enhancement
proposals](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&bug_severity=enhancement)
-
-#### By operating system
-
-* [List of open GIMP on Linux
bugs](https://bugzilla.gnome.org/buglist.cgi?order=Importance;classification=Other;op_sys=Linux;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=GIMP)
-* [List of open GIMP on OS X
bugs](https://bugzilla.gnome.org/buglist.cgi?order=Importance&classification=Other&op_sys=Mac%20OS&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&product=GIMP)
-* [List of open GIMP on Windows
bugs](https://bugzilla.gnome.org/buglist.cgi?order=Importance;classification=Other;op_sys=Windows;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=GIMP)
-* [List of open GIMP bugs, failing on all
platforms](https://bugzilla.gnome.org/buglist.cgi?order=Importance;classification=Other;op_sys=All;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=GIMP)
-
-* [Submit a new GIMP bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP)
-
-### GIMP Help bugs
-
-* [List of open bugs
(all)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [List of open bugs (all excluding enhancement
requests)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial)
-
-* [List of bugs that are easy to
fix](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&keywords=gnome-love)
-
-* [List of closed bugs (The past
week)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=RESOLVED&bug_status=CLOSED&changedin=7)
-* [List of fixed bugs since last
release](https://bugzilla.gnome.org/buglist.cgi?chfieldto=Now;query_format=advanced;order=Importance;chfieldfrom=2013-11-28;bug_status=RESOLVED;resolution=FIXED;product=GIMP-manual;classification=Other)
-
-* [Submit a new GIMP Help bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP-manual)
-
-### GIMP Website bugs
-
-* [List of open bugs
(all)](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [List of open bugs (all excluding enhancement
requests)](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial)
-
-* [List of bugs that are easy to
fix](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&keywords=gnome-love)
-
-* [List of closed bugs (The past
week)](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=RESOLVED&bug_status=CLOSED&changedin=7)
-
-* [Submit a new GIMP Website bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=gimp-web)
-
-## Security bugs
-
-Some bug reports may be related to security issues. For example, a file plug-in may be vulnerable to a
buffer overflow allowing arbitrary code execution when loading an image. We believe that the best way to
report these vulnerabilities is through Bugzilla, as described above. This will ensure that the bug is
reviewed and handled quickly (if necessary, a developer may decide to hide a sensitive bug report from other
users until it is fixed). But if you really do not want to use Bugzilla for security reports and you do not
mind some extra delay, you can also contact a limited set of GIMP developers by mail @gimp.org, using the
special alias "security". What will happen next is that a developer will review the issue and submit it in
Bugzilla, usually as a hidden bug report only visible to developers. This will take a bit longer than if you
directly submit the bug yourself, but we know that some people have a policy of not disclosing security
vulnerabilities publicly, so we pro
vide that address for their convenience.
+Title: Bugs
+Date: 2015-08-17T11:09:31-05:00
+Modified: 2015-08-17T11:09:40-05:00
+Authors: Pat David
+Status: hidden
+
+
+Making good bug reports is a great way to help increase the software quality of GIMP. A good bug report is a
bug report that provides unambigous step-by-step instructions on how to reproduce the bug, what result that
is expected, and what the actual result it. Good bug reports makes it easy for the developers to reproduce
and fix the bug.
+
+Related to bug reports are enhancement requests. An enhancement request should never be filed without prior
discussion on the gimp-developer [mailing list](/mail_lists.html). This is to make sure that the enhancement
requests that are filed are well-specified and aligned with the overall goals the developers have for GIMP.
+
+More information about Bugzilla, and bug hunting in general, can be found at
[http://wiki.gimp.org/](http://wiki.gimp.org/). See also [why we are using Bugzilla](why_bugzilla.html) to
handle bug reports. The rest of this page contains more detailed information regarding bug reports.
+
+## Bug How Tos
+
+Since correctly submitting a bug report requires you to use tools you may have not used previously, we have
created two documents. The first helps you to learn Bugzilla, which is the bug system used by GIMP developers
to track bug reports. If you are fixing a problem yourself, the second document shows you how to properly
create and submit a patch.
+
+* [How To Bugzilla](/bugs/howtos/bugzilla.html)
+* [How To Create and Submit a Patch](/bugs/howtos/submit-patch.html)
+
+## Bug Lists
+
+Below are different links into Bugzilla which show you lists of open and closed bugs. You can also search
manually, but these links are often more convienient. With the help of the lists below you should be able to
see if the bug you have found has already been reported. If it has been reported, and you have additional
information, please add a comment with the additional information!
+
+### GIMP bugs
+
+* [List of open bugs
(all)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [List of open bugs (all excluding enhancement
requests)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial)
+
+* [List of bugs that are easy to
fix](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&keywords=gnome-love)
+
+* [List of closed bugs (The past
week)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=RESOLVED&bug_status=CLOSED&changedin=7)
+* [List of fixed bugs since last
release](https://bugzilla.gnome.org/buglist.cgi?chfieldto=Now;query_format=advanced;order=Importance;chfieldfrom=2013-11-28;bug_status=RESOLVED;resolution=FIXED;product=GIMP;classification=Other)
+
+#### By severity
+
+* [List of open bugs (blocker and
critical)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical)
+* [List of open bugs
(major)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=major)
+* [List of open bugs
(normal)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=normal)
+* [List of open bugs (minor and
trivial)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=minor&bug_severity=trivial)
+* [List of open enhancement
proposals](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&bug_severity=enhancement)
+
+#### By operating system
+
+* [List of open GIMP on Linux
bugs](https://bugzilla.gnome.org/buglist.cgi?order=Importance;classification=Other;op_sys=Linux;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=GIMP)
+* [List of open GIMP on OS X
bugs](https://bugzilla.gnome.org/buglist.cgi?order=Importance&classification=Other&op_sys=Mac%20OS&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&product=GIMP)
+* [List of open GIMP on Windows
bugs](https://bugzilla.gnome.org/buglist.cgi?order=Importance;classification=Other;op_sys=Windows;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=GIMP)
+* [List of open GIMP bugs, failing on all
platforms](https://bugzilla.gnome.org/buglist.cgi?order=Importance;classification=Other;op_sys=All;query_format=advanced;bug_status=UNCONFIRMED;bug_status=NEW;bug_status=ASSIGNED;bug_status=REOPENED;bug_status=NEEDINFO;product=GIMP)
+
+* [Submit a new GIMP bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP)
+
+### GIMP Help bugs
+
+* [List of open bugs
(all)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [List of open bugs (all excluding enhancement
requests)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial)
+
+* [List of bugs that are easy to
fix](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&keywords=gnome-love)
+
+* [List of closed bugs (The past
week)](https://bugzilla.gnome.org/buglist.cgi?product=GIMP-manual&bug_status=RESOLVED&bug_status=CLOSED&changedin=7)
+* [List of fixed bugs since last
release](https://bugzilla.gnome.org/buglist.cgi?chfieldto=Now;query_format=advanced;order=Importance;chfieldfrom=2013-11-28;bug_status=RESOLVED;resolution=FIXED;product=GIMP-manual;classification=Other)
+
+* [Submit a new GIMP Help bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP-manual)
+
+### GIMP Website bugs
+
+* [List of open bugs
(all)](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [List of open bugs (all excluding enhancement
requests)](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial)
+
+* [List of bugs that are easy to
fix](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=UNCONFIRMED&bug_status=NEEDINFO&keywords=gnome-love)
+
+* [List of closed bugs (The past
week)](https://bugzilla.gnome.org/buglist.cgi?product=gimp-web&bug_status=RESOLVED&bug_status=CLOSED&changedin=7)
+
+* [Submit a new GIMP Website bug report](https://bugzilla.gnome.org/enter_bug.cgi?product=gimp-web)
+
+## Security bugs
+
+Some bug reports may be related to security issues. For example, a file plug-in may be vulnerable to a
buffer overflow allowing arbitrary code execution when loading an image. We believe that the best way to
report these vulnerabilities is through Bugzilla, as described above. This will ensure that the bug is
reviewed and handled quickly (if necessary, a developer may decide to hide a sensitive bug report from other
users until it is fixed). But if you really do not want to use Bugzilla for security reports and you do not
mind some extra delay, you can also contact a limited set of GIMP developers by mail @gimp.org, using the
special alias "security". What will happen next is that a developer will review the issue and submit it in
Bugzilla, usually as a hidden bug report only visible to developers. This will take a bit longer than if you
directly submit the bug yourself, but we know that some people have a policy of not disclosing security
vulnerabilities publicly, so we pro
vide that address for their convenience.
diff --git a/content/bugs/why_bugzilla.md b/content/bugs/why_bugzilla.md
index 0dd2564..4257970 100644
--- a/content/bugs/why_bugzilla.md
+++ b/content/bugs/why_bugzilla.md
@@ -1,31 +1,31 @@
-Title: Why Do We Use Bugzilla for Reports?
-Date: 2015-08-17T11:09:31-05:00
-Modified: 2015-08-17T11:09:40-05:00
-Authors: Pat David
-Status: hidden
-
-
-
-From time to time, we get questions about why we are [using Bugzilla](/bugs/) for tracking bug reports
related to GIMP or to this web site. Some users would prefer to send us a simple e-mail describing the
problem or to fill in a web form without having to register and create a Bugzilla account.
-
-Besides the fact that the [same instance of Bugzilla](http://bugzilla.gnome.org/) is already used for
tracking bugs related to GTK+ (GIMP ToolKit) and GNOME, here are some reasons why we ask bug reporters to
take the time to create a Bugzilla account:
-
-### Most bug reports need additional information from the reporter
-
-In most cases, it is necessary for the developers to ask for additional information. This can be because
some general information such as the GIMP version number or the operating system was not specified, or
because the problem is not easy to reproduce and the developers need a step-by-step description of the
process that leads to unexpected results. If the report is a request for enhancements, it is often necessary
to discuss some details and to clarify what the reporter wants and how it is best implemented.
-
-Requesting the creation of a Bugzilla account ensures that all comments added by developers or other
contributors will reach the original reporter. This is also useful for informing the reporter about any
changes in the status of the bug report, such as when a patch is supplied or when the bug is fixed.
-
-The owner of a Bugzilla account can switch to a different e-mail address easily and can also configure the
types of notifications that are sent via e-mail. Being able to change e-mail addresses is important if some
bug reports or proposals for enhancements remain open for a long time.
-
-### Several developers can provide feedback and work on the bug report
-
-Although the requests for additional information could also be handled via e-mail, Bugzilla provides some
important features that allow several people to cooperate and to handle bugs in a better way. Anybody can
view the status of the bugs or add comments at any time. It is also possible for interested parties to add
their own address to the CC list of a bug report in order to be notified whenever something changes. Allowing
more people to participate increases the chances that someone will be able to fix the bug or at least provide
a timely response. This applies to the GIMP application and its various components as well as to this web
site.
-
-In addition, Bugzilla allows us to keep track of the status of all bug reports and ensure that no bug is
forgotten. Although most bugs can be fixed rather quickly, a few remain open for a long time because they
depend on other bugs or because nobody has been able to work on them yet. Bugzilla never forgets them, while
it would be easy to forget about some e-mail discussion that took place several weeks earlier, especially if
the bug is eventually fixed by someone else than the original developer.
-
-### Other features of Bugzilla
-
-Bugzilla provides a convenient way to handle duplicate bug reports: when a bug is marked as being a
duplicate of another, the reporter can easily see the status of the original bug report and can read all
comments attached to it. The reporter is also added to the CC list of the original bug report in order to be
notified of any updates.
-
-Note that we have used other bug tracking systems in the past such as the Debian bug tracker, which is
mostly e-mail based. But the set of features currently provided by Bugzilla is what allows GIMP developers to
work in the best way.
+Title: Why Do We Use Bugzilla for Reports?
+Date: 2015-08-17T11:09:31-05:00
+Modified: 2015-08-17T11:09:40-05:00
+Authors: Pat David
+Status: hidden
+
+
+
+From time to time, we get questions about why we are [using Bugzilla](/bugs/) for tracking bug reports
related to GIMP or to this web site. Some users would prefer to send us a simple e-mail describing the
problem or to fill in a web form without having to register and create a Bugzilla account.
+
+Besides the fact that the [same instance of Bugzilla](http://bugzilla.gnome.org/) is already used for
tracking bugs related to GTK+ (GIMP ToolKit) and GNOME, here are some reasons why we ask bug reporters to
take the time to create a Bugzilla account:
+
+### Most bug reports need additional information from the reporter
+
+In most cases, it is necessary for the developers to ask for additional information. This can be because
some general information such as the GIMP version number or the operating system was not specified, or
because the problem is not easy to reproduce and the developers need a step-by-step description of the
process that leads to unexpected results. If the report is a request for enhancements, it is often necessary
to discuss some details and to clarify what the reporter wants and how it is best implemented.
+
+Requesting the creation of a Bugzilla account ensures that all comments added by developers or other
contributors will reach the original reporter. This is also useful for informing the reporter about any
changes in the status of the bug report, such as when a patch is supplied or when the bug is fixed.
+
+The owner of a Bugzilla account can switch to a different e-mail address easily and can also configure the
types of notifications that are sent via e-mail. Being able to change e-mail addresses is important if some
bug reports or proposals for enhancements remain open for a long time.
+
+### Several developers can provide feedback and work on the bug report
+
+Although the requests for additional information could also be handled via e-mail, Bugzilla provides some
important features that allow several people to cooperate and to handle bugs in a better way. Anybody can
view the status of the bugs or add comments at any time. It is also possible for interested parties to add
their own address to the CC list of a bug report in order to be notified whenever something changes. Allowing
more people to participate increases the chances that someone will be able to fix the bug or at least provide
a timely response. This applies to the GIMP application and its various components as well as to this web
site.
+
+In addition, Bugzilla allows us to keep track of the status of all bug reports and ensure that no bug is
forgotten. Although most bugs can be fixed rather quickly, a few remain open for a long time because they
depend on other bugs or because nobody has been able to work on them yet. Bugzilla never forgets them, while
it would be easy to forget about some e-mail discussion that took place several weeks earlier, especially if
the bug is eventually fixed by someone else than the original developer.
+
+### Other features of Bugzilla
+
+Bugzilla provides a convenient way to handle duplicate bug reports: when a bug is marked as being a
duplicate of another, the reporter can easily see the status of the original bug report and can read all
comments attached to it. The reporter is also added to the CC list of the original bug report in order to be
notified of any updates.
+
+Note that we have used other bug tracking systems in the past such as the Debian bug tracker, which is
mostly e-mail based. But the set of features currently provided by Bugzilla is what allows GIMP developers to
work in the best way.
diff --git a/content/docs/gimp-print/print.md b/content/docs/gimp-print/print.md
index 6c4f92e..36bb9eb 100644
--- a/content/docs/gimp-print/print.md
+++ b/content/docs/gimp-print/print.md
@@ -1,231 +1,231 @@
-Title: The Print Plugin
-Date: 2015-08-14T15:07:00-05:00
-Author: Pat David
-Status: hidden
-
-
-
-
-<figure>
-<img src='print-main.png' alt="Main Window" />
-<figcaption>
-Figure 1\. The Main Window
-</figcaption>
-</figure>
-
-The main window is divided into five panes:
-
-<dl>
-<dt><span class="GUILABEL">Preview</span></dt>
-<dd>
-The <span class="GUILABEL">Preview</span> pane contains a <span class="GUIBUTTON">positioning widget</span>
that allows interactively positioning the output on the page. It contains an outer border, representing the
sheet of paper; an inner border, representing the printable area of the printer; an arrow, pointing to the
top of the page (the end that's fed into the printer); and a black rectangle, representing the position of
the image on the page. The image can be moved around on the paper. When the first (<span
class="MOUSEBUTTON">left</span>) button is used, the image is moved in screen pixels; when any other button
is used, the image is moved in points[[1]](#FTN.AEN19). The arrow resizes depending upon the media size
chosen; the shaft of the arrow is always equal to one inch on the output.
-</dd>
-
-<dt><span class="GUILABEL">Printer Settings</span></dt>
-<dd>
-The <span class="GUILABEL">Printer Settings</span> pane contains a dropdown menu for selecting a printer to
print to. There is a special <span class="QUOTE">"printer"</span> named File that allows you to choose a file
to print to, rather than a printer queue. The <span class="GUILABEL">Setup</span> box to the right allows
specification of a printer type, a PPD file[[2]](#FTN.AEN29), and the command to be used to print. Each
distinct printer in the <span class="GUIBUTTON">Printer</span> list can have different settings applied to
it. Below that is a <span class="GUIBUTTON">combo box</span> allowing choice of media size. The choices are
constrained to those that the printer supports. Below that are <span class="GUIBUTTON">dropdown</span> menus
for choosing media type (what kind of paper), media source (what input tray), ink type, and resolution. All
of these settings are printer-specific.
-
-
-<figure>
-<img src="print-setup.png" alt="Print Setup" />
-<figcaption>
-Figure 2. The setup
-</figcaption>
-</figure>
-
-</dd>
-
-<dt><span class="GUILABEL">Position</span></dt>
-<dd>
-The <span class="GUILABEL">Position</span> pane contains various widgets to place the image on the paper.
These widgets work in conjunction with the <span class="GUILABEL">Preview</span> pane. At the top left of the
pane is a button to center the image on the paper (not on the printable area). To its right is a <span
class="GUIBUTTON">button group</span> that allows choosing English (inch) units or metric (centimeter) units.
Below these are <span class="GUIBUTTON">four boxes</span> that allow entry of the left, top, right, and
bottom of the image. These positions are relative to the top left of the paper[[3]](#FTN.AEN48). There are
two additional boxes that allow specification of the right margin and bottom margin if you prefer; these are
relative to the bottom right corner of the paper. Any of these may have values entered into them; the preview
image will be moved appropriately.
-
-<blockquote>**Note:** These entries do not resize the image.</blockquote>
-
-Finally, there is a pick box for <span class="GUIBUTTON">orientation</span> (landscape or portrait). There
is an <span class="GUIBUTTON">Auto</span> mode that picks the orientation that yields the orientation that
best matches that of the image to be printed.
-</dd>
-
-<dt><span class="GUILABEL">Scaling</span></dt>
-<dd>
-The <span class="GUILABEL">Scaling</span> pane contains a slider that allows scaling of the image. The image
can be scaled in either percent of the printable area (NOT the page in this case) or pixels per inch (<span
class="ACRONYM">PPI</span>) via a <span class="GUIBUTTON">radio button</span> below the slider. <span
class="ACRONYM">PPI</span> allows matching image resolution to printer resolution. The image may be scaled
using either method to between 5 and 100% of the imageable area. It is not possible to crop with the Print
plugin. In <span class="GUIBUTTON">Percent</span> mode, the image is scaled so that neither axis will be
longer than the percent of the printable area specified. For example, if you print an image at 20%, it will
be possible to tile the image 5 times on one axis and at least 5 times on the other. To the right of the
radio button is a button called <span class="GUIBUTTON">Set Image Scale</span>. This sets the scaling to
<span class="ACRONYM">PPI</span>,
and sets the resolution as closely as possible to the resolution stored in the image. To the right of the
<span class="GUIBUTTON">Set Image Scale</span> button are two boxes that allow entry of <span
class="GUIBUTTON">width</span> and <span class="GUIBUTTON">height</span> of the image. These set the scaling
mode to <span class="ACRONYM">PPI</span>. Specifying one automatically sets the other, and the image is
repositioned as needed to prevent it from falling off the edge of the page.
-</dd>
-
-<dt><span class="GUILABEL">Image Settings</span></dt>
-
-<dd>
-
-The <span class="GUILABEL">Image Settings</span> pane allows choice of <span class="GUIBUTTON">Line
Art</span>, <span class="GUIBUTTON">Solid Colors</span>, <span class="GUIBUTTON">Photograph</span>, or <span
class="GUIBUTTON">Monochrome</span> image type. Line art or Solid Colors should be used for graphics
containing mostly solid areas of color. They're very similar to each other. Photograph mode dithers more
slowly, but produces more accurate colors. Finally, Monochrome mode can be used to print absolute black and
white very quickly. To the right of these four radio buttons is a button called <span
class="GUIBUTTON">Adjust Color</span>. This pops up a new window that controls various output quality
settings. That will be described separately. Finally, there is a choice of Black and White and Color output.
-
-</dd>
-
-<dt><span class="GUILABEL">Action Buttons</span></dt>
-<dd>
-The last pane contains four action buttons:
-
-* <span class="GUIBUTTON">Print and Save Settings</span> — immediately print the image (or, if the File
printer is chosen, display a file selection window to pick the output file), and save all current settings
for all printers.
-
-* <span class="GUIBUTTON">Save Settings</span> — immediately save the settings, and continue working in
the Print plugin.
-
-* <span class="GUIBUTTON">Print</span> — immediately print the image (or, if the File printer is chosen,
display a file selection window to pick the output file), but do not save settings.
-
-* <span class="GUIBUTTON">Cancel</span> — immediately quit without saving or printing.
-
-</dd>
-
-</dl>
-
-
-<div class="SECT2">
-
-## <a name="ADJUST-COLOR"><span class="GUIBUTTON">Adjust Color</span></a>
-
-The Adjust Color button button pops up a non-modal dialog that allows adjustment of various parameters
related to the print quality. These are independent of the controls within the <span
class="APPLICATION">GIMP</span> itself and only affect the print.
-
-<div class="FIGURE"><a name="PRINT-COLOR-PNG"></a>
-
-**Figure 3\. The Color Settings**
-
-<div class="MEDIAOBJECT">
-
-![](print-color.png)
-
-</div>
-
-</div>
-
-At the top of the window is a thumbnail of the image that changes to reflect the color settings of the
image. This enables you to get an idea of how the image will print out as you adjust settings.
-
-Below that there are eight sliders:
-
-<div class="VARIABLELIST">
-
-<dl>
-
-<dt><span class="GUILABEL">Brightness (0-2.0, default 1.0)</span></dt>
-
-<dd>
-
-adjust the brightness of the image.
-
-</dd>
-
-<dt><span class="GUILABEL">Contrast (0-4.0, default 1.0)</span></dt>
-
-<dd>
-
-adjust the output contrast.
-
-</dd>
-
-<dt><span class="GUILABEL">Cyan, Magenta, Yellow (0-4.0, default 1.0)</span></dt>
-
-<dd>
-
-adjust the cyan, magenta, and yellow in the output. These should not normally need to be adjusted very much;
even very small adjustments can go quite a long way to restoring color balance..
-
-</dd>
-
-<dt><span class="GUILABEL">Saturation (0-9.0, default 1.0)</span></dt>
-
-<dd>
-
-adjust the color brilliance (saturation) of the output. Saturation of 0 means pure gray scale, with no
color. Saturation of 9.0 will make just about anything but pure grays brilliantly colored.
-
-</dd>
-
-<dt><span class="GUILABEL">Density (0.1-2.0, default 1.0)</span></dt>
-
-<dd>
-
-adjust the density (amount of ink) in the print. The density is automatically corrected for the particular
printer, resolution, and in some cases paper choices. If solid black in the input is not solid in the print,
the density needs to be increased; if there is excessive ink bleed-through and muddy dark colors, the density
should be decreased.
-
-<div class="NOTE">
-
-> **Note:** that the density will not increase beyond a certain amount no matter what the slider is set to.
-
-</div>
-
-</dd>
-
-<dt><span class="GUILABEL">Gamma (0.1-4.0, default 1.0)</span></dt>
-
-<dd>
-
-adjust the output gamma. The gamma value is automatically corrected for the choice of printer; this is used
if you believe the automatic setting is incorrect.
-
-</dd>
-
-<dt><span class="GUILABEL">Dither Algorithm</span></dt>
-
-<dd>
-
-There is also a selection box for the <span class="GUILABEL">dither algorithm</span> to be used. There are
currently seven choices:
-
-* Adaptive Hybrid usually yields the best output quality; it chooses a modified Floyd-Steinberg error
diffusion algorithm or ordered dithering depending upon the image characteristics.
-
-* Ordered uses a pure ordered dither. It generally yields excellent quality for simple black and white or
four color printers without variable drop size or drop modulation; it is not recommended if high quality is
desired on six color printers. It is considerably faster than Adaptive Hybrid.
-
-* Fast also uses a pure ordered dither, but uses a very simple black model and makes no attempt to handle
multi-level (6-color, variable drop size, or drop modulation) at all cleanly. It is substantially faster than
Ordered dither. The quality tends to be quite poor except on simple four color printers. On three color
printers, quality is probably competitive with anything else.
-
-* Very Fast is similar to Fast, except that it uses a very simple dither matrix that can be looked up much
more quickly than the matrix used in the Fast dither. For simple pure black and white images dominated by
horizontal and vertical lines, this may actually yield the best results; for other types of image, the
quality will be poor.
-
-* Adaptive Random is similar to Adaptive Hybrid, except that the modifications to the Floyd-Steinberg
algorithm are slightly different. This is slower than Adaptive Hybrid on most systems. For some images the
quality may be better than Adaptive Hybrid, but generally Adaptive Hybrid should yield slightly superior
images.
-
-* Hybrid Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of Adaptive Hybrid on the entire
image. Generally, the results are poor in pale regions.
-
-* Random Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of Adaptive Random on the entire
image. Generally, the results are poor in pale regions.
-
-</dd>
-
-</dl>
-
-</div>
-
-</div>
-
-</div>
-
-### Notes
-
-<table border="0" class="FOOTNOTES" width="100%">
-
-<tbody>
-
-<tr>
-
-<td align="LEFT" valign="TOP" width="5%">[[1]](print.html#AEN19)</td>
-
-<td align="LEFT" valign="TOP" width="95%">
-
-the output resolution of the plugin
-
-</td>
-
-</tr>
-
-<tr>
-
-<td align="LEFT" valign="TOP" width="5%">[[2]](print.html#AEN29)</td>
-
-<td align="LEFT" valign="TOP" width="95%">
-
-for Postscript printers
-
-</td>
-
-</tr>
-
-<tr>
-
-<td align="LEFT" valign="TOP" width="5%">[[3]](print.html#AEN48)</td>
-
-<td align="LEFT" valign="TOP" width="95%">
-
-again, that's relative to the paper corner, not the printable area, which is usually smaller
-
-</td>
-
-</tr>
-
-</tbody>
-
-</table>
+Title: The Print Plugin
+Date: 2015-08-14T15:07:00-05:00
+Author: Pat David
+Status: hidden
+
+
+
+
+<figure>
+<img src='print-main.png' alt="Main Window" />
+<figcaption>
+Figure 1\. The Main Window
+</figcaption>
+</figure>
+
+The main window is divided into five panes:
+
+<dl>
+<dt><span class="GUILABEL">Preview</span></dt>
+<dd>
+The <span class="GUILABEL">Preview</span> pane contains a <span class="GUIBUTTON">positioning widget</span>
that allows interactively positioning the output on the page. It contains an outer border, representing the
sheet of paper; an inner border, representing the printable area of the printer; an arrow, pointing to the
top of the page (the end that's fed into the printer); and a black rectangle, representing the position of
the image on the page. The image can be moved around on the paper. When the first (<span
class="MOUSEBUTTON">left</span>) button is used, the image is moved in screen pixels; when any other button
is used, the image is moved in points[[1]](#FTN.AEN19). The arrow resizes depending upon the media size
chosen; the shaft of the arrow is always equal to one inch on the output.
+</dd>
+
+<dt><span class="GUILABEL">Printer Settings</span></dt>
+<dd>
+The <span class="GUILABEL">Printer Settings</span> pane contains a dropdown menu for selecting a printer to
print to. There is a special <span class="QUOTE">"printer"</span> named File that allows you to choose a file
to print to, rather than a printer queue. The <span class="GUILABEL">Setup</span> box to the right allows
specification of a printer type, a PPD file[[2]](#FTN.AEN29), and the command to be used to print. Each
distinct printer in the <span class="GUIBUTTON">Printer</span> list can have different settings applied to
it. Below that is a <span class="GUIBUTTON">combo box</span> allowing choice of media size. The choices are
constrained to those that the printer supports. Below that are <span class="GUIBUTTON">dropdown</span> menus
for choosing media type (what kind of paper), media source (what input tray), ink type, and resolution. All
of these settings are printer-specific.
+
+
+<figure>
+<img src="print-setup.png" alt="Print Setup" />
+<figcaption>
+Figure 2. The setup
+</figcaption>
+</figure>
+
+</dd>
+
+<dt><span class="GUILABEL">Position</span></dt>
+<dd>
+The <span class="GUILABEL">Position</span> pane contains various widgets to place the image on the paper.
These widgets work in conjunction with the <span class="GUILABEL">Preview</span> pane. At the top left of the
pane is a button to center the image on the paper (not on the printable area). To its right is a <span
class="GUIBUTTON">button group</span> that allows choosing English (inch) units or metric (centimeter) units.
Below these are <span class="GUIBUTTON">four boxes</span> that allow entry of the left, top, right, and
bottom of the image. These positions are relative to the top left of the paper[[3]](#FTN.AEN48). There are
two additional boxes that allow specification of the right margin and bottom margin if you prefer; these are
relative to the bottom right corner of the paper. Any of these may have values entered into them; the preview
image will be moved appropriately.
+
+<blockquote>**Note:** These entries do not resize the image.</blockquote>
+
+Finally, there is a pick box for <span class="GUIBUTTON">orientation</span> (landscape or portrait). There
is an <span class="GUIBUTTON">Auto</span> mode that picks the orientation that yields the orientation that
best matches that of the image to be printed.
+</dd>
+
+<dt><span class="GUILABEL">Scaling</span></dt>
+<dd>
+The <span class="GUILABEL">Scaling</span> pane contains a slider that allows scaling of the image. The image
can be scaled in either percent of the printable area (NOT the page in this case) or pixels per inch (<span
class="ACRONYM">PPI</span>) via a <span class="GUIBUTTON">radio button</span> below the slider. <span
class="ACRONYM">PPI</span> allows matching image resolution to printer resolution. The image may be scaled
using either method to between 5 and 100% of the imageable area. It is not possible to crop with the Print
plugin. In <span class="GUIBUTTON">Percent</span> mode, the image is scaled so that neither axis will be
longer than the percent of the printable area specified. For example, if you print an image at 20%, it will
be possible to tile the image 5 times on one axis and at least 5 times on the other. To the right of the
radio button is a button called <span class="GUIBUTTON">Set Image Scale</span>. This sets the scaling to
<span class="ACRONYM">PPI</span>,
and sets the resolution as closely as possible to the resolution stored in the image. To the right of the
<span class="GUIBUTTON">Set Image Scale</span> button are two boxes that allow entry of <span
class="GUIBUTTON">width</span> and <span class="GUIBUTTON">height</span> of the image. These set the scaling
mode to <span class="ACRONYM">PPI</span>. Specifying one automatically sets the other, and the image is
repositioned as needed to prevent it from falling off the edge of the page.
+</dd>
+
+<dt><span class="GUILABEL">Image Settings</span></dt>
+
+<dd>
+
+The <span class="GUILABEL">Image Settings</span> pane allows choice of <span class="GUIBUTTON">Line
Art</span>, <span class="GUIBUTTON">Solid Colors</span>, <span class="GUIBUTTON">Photograph</span>, or <span
class="GUIBUTTON">Monochrome</span> image type. Line art or Solid Colors should be used for graphics
containing mostly solid areas of color. They're very similar to each other. Photograph mode dithers more
slowly, but produces more accurate colors. Finally, Monochrome mode can be used to print absolute black and
white very quickly. To the right of these four radio buttons is a button called <span
class="GUIBUTTON">Adjust Color</span>. This pops up a new window that controls various output quality
settings. That will be described separately. Finally, there is a choice of Black and White and Color output.
+
+</dd>
+
+<dt><span class="GUILABEL">Action Buttons</span></dt>
+<dd>
+The last pane contains four action buttons:
+
+* <span class="GUIBUTTON">Print and Save Settings</span> — immediately print the image (or, if the File
printer is chosen, display a file selection window to pick the output file), and save all current settings
for all printers.
+
+* <span class="GUIBUTTON">Save Settings</span> — immediately save the settings, and continue working in
the Print plugin.
+
+* <span class="GUIBUTTON">Print</span> — immediately print the image (or, if the File printer is chosen,
display a file selection window to pick the output file), but do not save settings.
+
+* <span class="GUIBUTTON">Cancel</span> — immediately quit without saving or printing.
+
+</dd>
+
+</dl>
+
+
+<div class="SECT2">
+
+## <a name="ADJUST-COLOR"><span class="GUIBUTTON">Adjust Color</span></a>
+
+The Adjust Color button button pops up a non-modal dialog that allows adjustment of various parameters
related to the print quality. These are independent of the controls within the <span
class="APPLICATION">GIMP</span> itself and only affect the print.
+
+<div class="FIGURE"><a name="PRINT-COLOR-PNG"></a>
+
+**Figure 3\. The Color Settings**
+
+<div class="MEDIAOBJECT">
+
+![](print-color.png)
+
+</div>
+
+</div>
+
+At the top of the window is a thumbnail of the image that changes to reflect the color settings of the
image. This enables you to get an idea of how the image will print out as you adjust settings.
+
+Below that there are eight sliders:
+
+<div class="VARIABLELIST">
+
+<dl>
+
+<dt><span class="GUILABEL">Brightness (0-2.0, default 1.0)</span></dt>
+
+<dd>
+
+adjust the brightness of the image.
+
+</dd>
+
+<dt><span class="GUILABEL">Contrast (0-4.0, default 1.0)</span></dt>
+
+<dd>
+
+adjust the output contrast.
+
+</dd>
+
+<dt><span class="GUILABEL">Cyan, Magenta, Yellow (0-4.0, default 1.0)</span></dt>
+
+<dd>
+
+adjust the cyan, magenta, and yellow in the output. These should not normally need to be adjusted very much;
even very small adjustments can go quite a long way to restoring color balance..
+
+</dd>
+
+<dt><span class="GUILABEL">Saturation (0-9.0, default 1.0)</span></dt>
+
+<dd>
+
+adjust the color brilliance (saturation) of the output. Saturation of 0 means pure gray scale, with no
color. Saturation of 9.0 will make just about anything but pure grays brilliantly colored.
+
+</dd>
+
+<dt><span class="GUILABEL">Density (0.1-2.0, default 1.0)</span></dt>
+
+<dd>
+
+adjust the density (amount of ink) in the print. The density is automatically corrected for the particular
printer, resolution, and in some cases paper choices. If solid black in the input is not solid in the print,
the density needs to be increased; if there is excessive ink bleed-through and muddy dark colors, the density
should be decreased.
+
+<div class="NOTE">
+
+> **Note:** that the density will not increase beyond a certain amount no matter what the slider is set to.
+
+</div>
+
+</dd>
+
+<dt><span class="GUILABEL">Gamma (0.1-4.0, default 1.0)</span></dt>
+
+<dd>
+
+adjust the output gamma. The gamma value is automatically corrected for the choice of printer; this is used
if you believe the automatic setting is incorrect.
+
+</dd>
+
+<dt><span class="GUILABEL">Dither Algorithm</span></dt>
+
+<dd>
+
+There is also a selection box for the <span class="GUILABEL">dither algorithm</span> to be used. There are
currently seven choices:
+
+* Adaptive Hybrid usually yields the best output quality; it chooses a modified Floyd-Steinberg error
diffusion algorithm or ordered dithering depending upon the image characteristics.
+
+* Ordered uses a pure ordered dither. It generally yields excellent quality for simple black and white or
four color printers without variable drop size or drop modulation; it is not recommended if high quality is
desired on six color printers. It is considerably faster than Adaptive Hybrid.
+
+* Fast also uses a pure ordered dither, but uses a very simple black model and makes no attempt to handle
multi-level (6-color, variable drop size, or drop modulation) at all cleanly. It is substantially faster than
Ordered dither. The quality tends to be quite poor except on simple four color printers. On three color
printers, quality is probably competitive with anything else.
+
+* Very Fast is similar to Fast, except that it uses a very simple dither matrix that can be looked up much
more quickly than the matrix used in the Fast dither. For simple pure black and white images dominated by
horizontal and vertical lines, this may actually yield the best results; for other types of image, the
quality will be poor.
+
+* Adaptive Random is similar to Adaptive Hybrid, except that the modifications to the Floyd-Steinberg
algorithm are slightly different. This is slower than Adaptive Hybrid on most systems. For some images the
quality may be better than Adaptive Hybrid, but generally Adaptive Hybrid should yield slightly superior
images.
+
+* Hybrid Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of Adaptive Hybrid on the entire
image. Generally, the results are poor in pale regions.
+
+* Random Floyd-Steinberg uses the modified Floyd-Steinberg algorithm of Adaptive Random on the entire
image. Generally, the results are poor in pale regions.
+
+</dd>
+
+</dl>
+
+</div>
+
+</div>
+
+</div>
+
+### Notes
+
+<table border="0" class="FOOTNOTES" width="100%">
+
+<tbody>
+
+<tr>
+
+<td align="LEFT" valign="TOP" width="5%">[[1]](print.html#AEN19)</td>
+
+<td align="LEFT" valign="TOP" width="95%">
+
+the output resolution of the plugin
+
+</td>
+
+</tr>
+
+<tr>
+
+<td align="LEFT" valign="TOP" width="5%">[[2]](print.html#AEN29)</td>
+
+<td align="LEFT" valign="TOP" width="95%">
+
+for Postscript printers
+
+</td>
+
+</tr>
+
+<tr>
+
+<td align="LEFT" valign="TOP" width="5%">[[3]](print.html#AEN48)</td>
+
+<td align="LEFT" valign="TOP" width="95%">
+
+again, that's relative to the paper corner, not the printable area, which is usually smaller
+
+</td>
+
+</tr>
+
+</tbody>
+
+</table>
diff --git a/content/docs/index.md b/content/docs/index.md
index 8f13f5f..ebe360c 100644
--- a/content/docs/index.md
+++ b/content/docs/index.md
@@ -1,57 +1,57 @@
-Title: Documentation
-Date: 2015-08-14T14:39:59-05:00
-Author: Pat David
-
-
-## GIMP User Manual
-
-GIMP comes with a built-in help system. Once you have started the program, press <kbd>F1</kbd> for
context-sensitive help. You may have to install the help pages from a separate package (gimp-help), depending
on how your version of GIMP was packaged.
-
-The user manual for the GIMP 2.8 release is available in several languages:
-
-* [Deutsch](http://docs.gimp.org/2.8/de/)
-* [English](http://docs.gimp.org/2.8/en/)
-* [Français](http://docs.gimp.org/2.8/fr/)
-* [Italiano](http://docs.gimp.org/2.8/it/)
-* [日本語(Japanese)](http://docs.gimp.org/2.8/ja/)
-* [Nederlands](http://docs.gimp.org/2.8/nl/)
-* [Español](http://docs.gimp.org/2.8/es/)
-* [한국어(Korean)](http://docs.gimp.org/2.8/ko/)
-* [Norwegian](http://docs.gimp.org/2.8/nn/)
-* [Pусский](http://docs.gimp.org/2.8/ru/)
-* [Ελληνικά](http://docs.gimp.org/2.8/el/)
-
-## Tutorials
-
-[Tutorials on gimp.org](/tutorials/)
-
-## Books
-
-[Books about GIMP](/books/)
-
-## GIMP User FAQ
-
-[Frequently Asked Questions](userfaq.html)
-
-## Configuration
-
-* [How to set the tile cache](/unix/howtos/tile_cache.html).
- The tile cache tells GIMP how much memory it can use before swapping some image data to disk. Setting
the size of the tile cache can be critical for the performance of your system.
-* [How to install fonts for use with GIMP](/unix/fonts.html)
-* [How to use MIDI devices with GIMP](/unix/howtos/gimp-midi.html)
-
-## GIMP Manual Pages
-
-* [<tt>gimp</tt> (1)](/man/gimp.html)
-* [<tt>gimprc</tt> (5)](/man/gimprc.html)
-* [<tt>gimp-remote</tt> (1)](/man/gimp-remote.html)
-* [<tt>gimptool-2.0</tt> (1)](/man/gimptool.html)
-
-## GIMP Documentation for Developers and Script Authors
-
-* [wiki.gimp.org](http://wiki.gimp.org/)
-* [Writing a plug-in](plug-in/plug-in.html)
-* [GIMP Python module documentation](python/index.html)
-* [GIMP Script-Fu documentation](scheme_plugin/)
-* [GIMP Script-Fu changes in GIMP 2.4 (migration guide)](script-fu-update.html)
-
+Title: Documentation
+Date: 2015-08-14T14:39:59-05:00
+Author: Pat David
+
+
+## GIMP User Manual
+
+GIMP comes with a built-in help system. Once you have started the program, press <kbd>F1</kbd> for
context-sensitive help. You may have to install the help pages from a separate package (gimp-help), depending
on how your version of GIMP was packaged.
+
+The user manual for the GIMP 2.8 release is available in several languages:
+
+* [Deutsch](http://docs.gimp.org/2.8/de/)
+* [English](http://docs.gimp.org/2.8/en/)
+* [Français](http://docs.gimp.org/2.8/fr/)
+* [Italiano](http://docs.gimp.org/2.8/it/)
+* [日本語(Japanese)](http://docs.gimp.org/2.8/ja/)
+* [Nederlands](http://docs.gimp.org/2.8/nl/)
+* [Español](http://docs.gimp.org/2.8/es/)
+* [한국어(Korean)](http://docs.gimp.org/2.8/ko/)
+* [Norwegian](http://docs.gimp.org/2.8/nn/)
+* [Pусский](http://docs.gimp.org/2.8/ru/)
+* [Ελληνικά](http://docs.gimp.org/2.8/el/)
+
+## Tutorials
+
+[Tutorials on gimp.org](/tutorials/)
+
+## Books
+
+[Books about GIMP](/books/)
+
+## GIMP User FAQ
+
+[Frequently Asked Questions](userfaq.html)
+
+## Configuration
+
+* [How to set the tile cache](/unix/howtos/tile_cache.html).
+ The tile cache tells GIMP how much memory it can use before swapping some image data to disk. Setting
the size of the tile cache can be critical for the performance of your system.
+* [How to install fonts for use with GIMP](/unix/fonts.html)
+* [How to use MIDI devices with GIMP](/unix/howtos/gimp-midi.html)
+
+## GIMP Manual Pages
+
+* [<tt>gimp</tt> (1)](/man/gimp.html)
+* [<tt>gimprc</tt> (5)](/man/gimprc.html)
+* [<tt>gimp-remote</tt> (1)](/man/gimp-remote.html)
+* [<tt>gimptool-2.0</tt> (1)](/man/gimptool.html)
+
+## GIMP Documentation for Developers and Script Authors
+
+* [wiki.gimp.org](http://wiki.gimp.org/)
+* [Writing a plug-in](plug-in/plug-in.html)
+* [GIMP Python module documentation](python/index.html)
+* [GIMP Script-Fu documentation](scheme_plugin/)
+* [GIMP Script-Fu changes in GIMP 2.4 (migration guide)](script-fu-update.html)
+
diff --git a/content/docs/script-fu-update.md b/content/docs/script-fu-update.md
index 37f8d4d..030d329 100644
--- a/content/docs/script-fu-update.md
+++ b/content/docs/script-fu-update.md
@@ -1,87 +1,87 @@
-Title: Script-Fu in GIMP 2.4
-Date: 2015-08-14T15:02:25-05:00
-Author: Pat David
-
-
-Since version 1.0 of GIMP, it has included a powerful scripting language which permits extending the
program's capabilities and simplifying repetitive tasks. This scripting language, called "Script-fu", was
based upon the Scheme programming language and implemented the SIOD interpreter written by George J. Carrette
while he was a professor at Boston University in the late 80s.
-
-This Script-fu interpreter based upon Carrette's SIOD has served GIMP extremely well over the last decade --
thousands of scripts have been written and shared by GIMP users -- but it is starting to show its age and
therefore the GIMP development team has decided to replace it with a more modern Scheme interpreter called
TinyScheme. One of the main reasons for this changeover is to support international languages and fonts, for
which SIOD offered no provision. There are other benefits as well, but lack of international support was the
most significant.
-
-Though this switch has required an extensive effort on the part of GIMP developers (particularly Kevin
Cozens) and some significant changes to the internals of the GIMP code, there should be very little visible
change to GIMP users. GIMP's scripting extension is still called "Script-fu" and the vast majority of the
scripts already available will still function using the new TinyScheme-based interpreter.
-
-Despite the desire to keep the impact of this change to GIMP internals to a minimum, there are some
differences between the SIOD-based interpreter and the TinyScheme-based Script-fu which may crop up when
trying to use older scripts with GIMP 2.4 and more recent releases. What follows is a description of some of
the problems which may be encountered and what steps need to be taken to correct them.
-
-* [Setting an undeclared variable](#unbound)
- (<tt>Error: set!: unbound variable: x</tt>)
-* [Using the empty list in conditionals](#condempty)
-* [Accessing the first element of an empty list](#carempty)
- (<tt>Error: car: argument 1 must be: pair</tt>)
-* [Accessing beyond the last element of a list](#cdrempty)
- (<tt>Error: cdr: argument 1 must be: pair</tt>)
-* [Constructing a pair](#cons)
- (<tt>Error: cons: needs 2 argument(s)</tt>)
-* [Fractional numbers must not start with a dot](#leadingdot)
- (<tt>Error: eval: unbound variable: .</tt> )
-* [Deprecated features](#deprecated)
-* [Conclusion](#conclusion)
- (and other differences)
-
-## Setting an undeclared variable
-
-By far, the most common problem that can be expected if using an older script is that it might assign a
value to a variable without first declaring the variable. SIOD-based Script-fu would permit a statement such
as `(set! x 4)` even if '<tt>x</tt>' had not been declared -- '<tt>x</tt>' would be defined automatically to
be a global variable. The new Script-fu protects against this situation and the programmer **must** declare
the variable first. The offending script would result in an error message stating, "<tt class="warn">Error:
set!: unbound variable: x</tt>".
-
-The use of global variables is generally discouraged because another function (written by a different
author) may have chosen to use the same name and the two functions would interfere with each other. For this
reason, the correct method of declaring '<tt>x</tt>' in the preceding example is to use the `let` or `let*`
statement:
-
- :::scheme
- (let* ( (x 4) )
- ...
- ...
- ...
- )
-
-## The empty list in conditionals
-
-SIOD treated the empty list to be FALSE when it appeared in a conditional test (if, while, cond, not, =,
etc) whereas the Scheme standard specifies that it should evaluate to TRUE. Programmers have been aware of
this difference since the beginning and it is unlikely that scripts will be encountered which rely upon
SIOD's nonstandard behavior but it is possible. A simple solution is to use the 'pair?' function to test the
list. For example, replace `(while lis ... )` with `(while (pair? lis) ...)`. Alternately, `(not (null?
lis))` could be used instead of `(pair? lis)`.
-
-## Accessing the first element of an empty list
-
-In SIOD, taking the 'car' of an empty list returned an empty list; in TinyScheme this is not permissible and
will generate an error message ("<tt class="warn">Error: car: argument 1 must be: pair</tt>"). Like the case
for conditionals, programmers have been aware of SIOD's nonstandard behavior and encountering this problem
should be rare. Correcting such a problem, if encountered, should consist of testing whether a list is empty
before accessing it.
-
-## Accessing beyond the last element of a list
-
-Similar to the preceding problem, SIOD would permit you to access beyond the last element in a list,
returning an empty list as a result. For example, taking the 'cdr' of an empty list or the 'cddr' of a
one-element list. In GIMP 2.4, Script-fu will not allow this and it will result in an error message ("<tt
class="warn">Error: cdr: argument 1 must be: pair</tt>"). Again, SIOD's behavior has long been realized to be
non-standard and this problem's occurance should be rare. Correcting such a problem, if encountered, should
consist of more precise testing when accessing a list.
-
-## Constructing a pair
-
-The Scheme `cons` function expects two arguments which are combined into a pair. In SIOD, if only one
argument was provided then the second argument was assumed to be an empty list. In GIMP 2.4, if the second
argument is not present than an error occurs ("<tt class="warn">Error: cons: needs 2 argument(s)</tt>"). The
solution, should this problem be encountered, is explicitly include an empty list as the second argument.
-
-## Fractional numbers must not start with a dot
-
-If you had some numbers written as '.5' instead of '0.5', then you may get the error "<tt
class="warn">Error: eval: unbound variable: .</tt> ". The solution is to make sure that all numbers start
with a digit and add a leading '0' if necessary. (Note: this is considered as a bug and this may be fixed in
a future GIMP release.)
-
-## Deprecated features
-
-The following SIOD functions or constants are currently made available in TinyScheme Script-fu but may
disappear in future versions.
-
-* `aset` - replaced by TinyScheme's `vector-set!`
-* `aref` - replaced by TinyScheme's `vector-ref`
-* `fopen` - replaced by TinyScheme's `open-input-file`
-* `mapcar` - replaced by TinyScheme's `map`
-* `nil` - replaced by TinyScheme's `'()`
-* `nreverse` - replaced by TinyScheme's `reverse`
-* `pow` - replaced by TinyScheme's `expt`
-* `prin1` - replaced by TinyScheme's `write`
-* `print` - replaced by TinyScheme's `write` (along with `newline`)
-* `strcat` - replaced by TinyScheme's `string-append`
-* `string-lessp` - replaced by TinyScheme's `string<?`
-* `symbol-bound?` - replaced by TinyScheme's `defined?`
-* `the-environment` - replaced by TinyScheme's `current-environment`
-* `*pi*` - the constant *pi* is not predefined in TinyScheme but can be defined as `(* 4 (atan 1.0))`
-* `butlast` - is not available in TinyScheme but alternate coding using `(reverse (cdr (reverse x)))` is
possible
-* `cons-array` - replaced by TinyScheme's `make-vector`
-
-## Conclusion
-
-There are some other differences between the original Script-fu and the Script-fu of GIMP 2.4 but they
should have little or no impact on existing scripts because of their rarity. These include the syntax for the
`catch`/`throw` statements (which trap errors) and the `bytes-append` function (which does not seem to appear
in any published Script-fu). If you encounter scripts containing such problems, please post on the GIMP
developers mailing list outlining your problems.
-
-More information about the Scheme syntax of Script-Fu can be found in the _Revised<sup>5</sup> Report on the
Algorithmic Language Scheme_, also know as [R5RS](http://schemers.org/Documents/Standards/R5RS/HTML/).
Tinyscheme does not support all features of R5RS, but if a precedure is available, it is supposed to behave
like documented.
+Title: Script-Fu in GIMP 2.4
+Date: 2015-08-14T15:02:25-05:00
+Author: Pat David
+
+
+Since version 1.0 of GIMP, it has included a powerful scripting language which permits extending the
program's capabilities and simplifying repetitive tasks. This scripting language, called "Script-fu", was
based upon the Scheme programming language and implemented the SIOD interpreter written by George J. Carrette
while he was a professor at Boston University in the late 80s.
+
+This Script-fu interpreter based upon Carrette's SIOD has served GIMP extremely well over the last decade --
thousands of scripts have been written and shared by GIMP users -- but it is starting to show its age and
therefore the GIMP development team has decided to replace it with a more modern Scheme interpreter called
TinyScheme. One of the main reasons for this changeover is to support international languages and fonts, for
which SIOD offered no provision. There are other benefits as well, but lack of international support was the
most significant.
+
+Though this switch has required an extensive effort on the part of GIMP developers (particularly Kevin
Cozens) and some significant changes to the internals of the GIMP code, there should be very little visible
change to GIMP users. GIMP's scripting extension is still called "Script-fu" and the vast majority of the
scripts already available will still function using the new TinyScheme-based interpreter.
+
+Despite the desire to keep the impact of this change to GIMP internals to a minimum, there are some
differences between the SIOD-based interpreter and the TinyScheme-based Script-fu which may crop up when
trying to use older scripts with GIMP 2.4 and more recent releases. What follows is a description of some of
the problems which may be encountered and what steps need to be taken to correct them.
+
+* [Setting an undeclared variable](#unbound)
+ (<tt>Error: set!: unbound variable: x</tt>)
+* [Using the empty list in conditionals](#condempty)
+* [Accessing the first element of an empty list](#carempty)
+ (<tt>Error: car: argument 1 must be: pair</tt>)
+* [Accessing beyond the last element of a list](#cdrempty)
+ (<tt>Error: cdr: argument 1 must be: pair</tt>)
+* [Constructing a pair](#cons)
+ (<tt>Error: cons: needs 2 argument(s)</tt>)
+* [Fractional numbers must not start with a dot](#leadingdot)
+ (<tt>Error: eval: unbound variable: .</tt> )
+* [Deprecated features](#deprecated)
+* [Conclusion](#conclusion)
+ (and other differences)
+
+## Setting an undeclared variable
+
+By far, the most common problem that can be expected if using an older script is that it might assign a
value to a variable without first declaring the variable. SIOD-based Script-fu would permit a statement such
as `(set! x 4)` even if '<tt>x</tt>' had not been declared -- '<tt>x</tt>' would be defined automatically to
be a global variable. The new Script-fu protects against this situation and the programmer **must** declare
the variable first. The offending script would result in an error message stating, "<tt class="warn">Error:
set!: unbound variable: x</tt>".
+
+The use of global variables is generally discouraged because another function (written by a different
author) may have chosen to use the same name and the two functions would interfere with each other. For this
reason, the correct method of declaring '<tt>x</tt>' in the preceding example is to use the `let` or `let*`
statement:
+
+ :::scheme
+ (let* ( (x 4) )
+ ...
+ ...
+ ...
+ )
+
+## The empty list in conditionals
+
+SIOD treated the empty list to be FALSE when it appeared in a conditional test (if, while, cond, not, =,
etc) whereas the Scheme standard specifies that it should evaluate to TRUE. Programmers have been aware of
this difference since the beginning and it is unlikely that scripts will be encountered which rely upon
SIOD's nonstandard behavior but it is possible. A simple solution is to use the 'pair?' function to test the
list. For example, replace `(while lis ... )` with `(while (pair? lis) ...)`. Alternately, `(not (null?
lis))` could be used instead of `(pair? lis)`.
+
+## Accessing the first element of an empty list
+
+In SIOD, taking the 'car' of an empty list returned an empty list; in TinyScheme this is not permissible and
will generate an error message ("<tt class="warn">Error: car: argument 1 must be: pair</tt>"). Like the case
for conditionals, programmers have been aware of SIOD's nonstandard behavior and encountering this problem
should be rare. Correcting such a problem, if encountered, should consist of testing whether a list is empty
before accessing it.
+
+## Accessing beyond the last element of a list
+
+Similar to the preceding problem, SIOD would permit you to access beyond the last element in a list,
returning an empty list as a result. For example, taking the 'cdr' of an empty list or the 'cddr' of a
one-element list. In GIMP 2.4, Script-fu will not allow this and it will result in an error message ("<tt
class="warn">Error: cdr: argument 1 must be: pair</tt>"). Again, SIOD's behavior has long been realized to be
non-standard and this problem's occurance should be rare. Correcting such a problem, if encountered, should
consist of more precise testing when accessing a list.
+
+## Constructing a pair
+
+The Scheme `cons` function expects two arguments which are combined into a pair. In SIOD, if only one
argument was provided then the second argument was assumed to be an empty list. In GIMP 2.4, if the second
argument is not present than an error occurs ("<tt class="warn">Error: cons: needs 2 argument(s)</tt>"). The
solution, should this problem be encountered, is explicitly include an empty list as the second argument.
+
+## Fractional numbers must not start with a dot
+
+If you had some numbers written as '.5' instead of '0.5', then you may get the error "<tt
class="warn">Error: eval: unbound variable: .</tt> ". The solution is to make sure that all numbers start
with a digit and add a leading '0' if necessary. (Note: this is considered as a bug and this may be fixed in
a future GIMP release.)
+
+## Deprecated features
+
+The following SIOD functions or constants are currently made available in TinyScheme Script-fu but may
disappear in future versions.
+
+* `aset` - replaced by TinyScheme's `vector-set!`
+* `aref` - replaced by TinyScheme's `vector-ref`
+* `fopen` - replaced by TinyScheme's `open-input-file`
+* `mapcar` - replaced by TinyScheme's `map`
+* `nil` - replaced by TinyScheme's `'()`
+* `nreverse` - replaced by TinyScheme's `reverse`
+* `pow` - replaced by TinyScheme's `expt`
+* `prin1` - replaced by TinyScheme's `write`
+* `print` - replaced by TinyScheme's `write` (along with `newline`)
+* `strcat` - replaced by TinyScheme's `string-append`
+* `string-lessp` - replaced by TinyScheme's `string<?`
+* `symbol-bound?` - replaced by TinyScheme's `defined?`
+* `the-environment` - replaced by TinyScheme's `current-environment`
+* `*pi*` - the constant *pi* is not predefined in TinyScheme but can be defined as `(* 4 (atan 1.0))`
+* `butlast` - is not available in TinyScheme but alternate coding using `(reverse (cdr (reverse x)))` is
possible
+* `cons-array` - replaced by TinyScheme's `make-vector`
+
+## Conclusion
+
+There are some other differences between the original Script-fu and the Script-fu of GIMP 2.4 but they
should have little or no impact on existing scripts because of their rarity. These include the syntax for the
`catch`/`throw` statements (which trap errors) and the `bytes-append` function (which does not seem to appear
in any published Script-fu). If you encounter scripts containing such problems, please post on the GIMP
developers mailing list outlining your problems.
+
+More information about the Scheme syntax of Script-Fu can be found in the _Revised<sup>5</sup> Report on the
Algorithmic Language Scheme_, also know as [R5RS](http://schemers.org/Documents/Standards/R5RS/HTML/).
Tinyscheme does not support all features of R5RS, but if a precedure is available, it is supposed to behave
like documented.
diff --git a/content/docs/userfaq-old.md b/content/docs/userfaq-old.md
index 819b11f..a3f3773 100644
--- a/content/docs/userfaq-old.md
+++ b/content/docs/userfaq-old.md
@@ -1,614 +1,614 @@
-Title: Frequency Asked Questions (Old)
-Date: 2015-08-14T15:07:00-05:00
-Author: Pat David
-
-
-
-_This FAQ is still a work in progress. Some sections are very outdated, other sections should probably be
removed, and some new questions and answers should be added. Please [contact us](/webmasters.html) if you can
improve it._
-
-[TOC]
-
-## General Information
-
-### What is this GIMP?
-
-The “GNU Image Manipulation Program” (originally the General Image Manipulation Program) sired by Spencer
Kimball & Peter Mattis.
-
-In their own words, “GIMP is our answer to the current lack of free (or at least reasonably priced) image
manipulation software for GNU/Linux and UNIX in general.”
-
-It is a raster editor, which means that it performs operations directly on the pixels that make up the
image, and not a vector editor. Other (proprietary) raster editors include Adobe Photoshop, Jasc Paintshop
Pro and the humble Microsoft Paint. An alternative free editor is [Krita](http://www.krita.org/). Users
wanting to edit photographs will certainly want a raster editor like GIMP. Graphic designers and illustrators
may prefer a vector editor depending on their tastes.
-
-### Where do I get it?
-
-Most (if not all) GNU/Linux distributions will support GIMP through their package management systems and may
even come with GIMP preinstalled. You can find the latest version for GNU/Linux, Microsoft Windows and Apple
Mac OS X on [the download page](/downloads/). Of course, this is [free
software](http://www.gnu.org/philosophy/free-sw.html) so the [source code](/source/) is available to, along
with instruction on how to compile it.
-
-### Why and when was GIMP changed from “general image manipulation program” to “GNU image manipulation
program”?
-
-One day (I believe it was in 1997) RMS visited Berkeley, and Spencer and Peter met with him. They asked if
they could change General to GNU, and it was done.
-
-### GIMP is a stupid name. Why can't you change it?
-
-GIMP is comfortable with its name and thinks that you should apologise for your rudeness.
-
-### Is GIMP a GNOME application?
-
-Not really. It doesn't use the GNOME application framework. The only thing it has in common is GTK+. GIMP
can optionally use gnome-vfs, allowing you to load and edit images from remote servers.
-
-### Is GTK+ still under the aegis of GIMP? Was it ever?
-
-GTK was developed solely for GIMP, initially. Towards the end of the 0.99 development cycle in 1998, GTK was
split from being bundled with GIMP to being a separately available library. See [ancient
history](/about/ancient_history.html) for some interesting tidbits from the GIMP perspective.
-
-### Which version should I use?
-
-You should use the latest stable release. See our [downloads page](/downloads/).
-
-### Is there a user manual?
-
-Yes. It is available in [HTML](http://docs.gimp.org/) form, and in [PDF](http://docs.gimp.org/download.html).
-
-### What about a Windows version?
-
-See [the download page](/downloads/).
-
-### What about a Mac version?
-
-See [the download page](/downloads/).
-
-### Are there any Easter eggs in GIMP?
-
-Yes.
-
-### Is there a mailing list?
-
-See our list of [Mailing Lists](/mail_lists.html).
-
-### Is there an IRC channel?
-
-See our list of [IRC channels](/irc.html).
-
-### Why does GIMP complain about missing or wrong versions of libraries?
-
-Probably because it can't find them.
-
-_FIXME: some of the advice given here is incorrect and even dangerous._
-
-There are a couple of solutions. The best one, if you have superuser access on your system, or a cooperative
system administrator, is to add GIMP's library directory to the system library configuration. To do this,
edit /etc/ld.so.conf to include /usr/local/lib and then type _ldconfig_ and things should work from then on.
-
-If you can't do this, add the directory to your LD_LIBRARY_PATH environment variable. Be sure you do this in
your shell's startup scripts as well.
-
-If you have old versions of the libraries, you will probably need to remove them first, especially if they
are in standard system locations such as /usr/lib . Don't just delete them, though; move them somewhere safe,
install the new ones, and try again. Then make sure everything else still works; you may have other programs
on your system which require the old versions. The ideal response in such a case is to rebuild all the
programs to use the new libraries. Where this isn't possible, you will just have to experiment with trying
them in different locations, or statically linking them to one or more programs.
-
-### Is XInput support available?
-
-Yes.
-
-### Does GIMP support art tablets like the Wacom?
-
-_FIXME: obsolete advice._
-
-In the more recent releases of most distros, installing the wacom-tools package should make tablet support
“just work”. Make sure that you enable the input devices in GIMP, too.
-
-Otherwise, you have to do a little extra work to compile it in.
-
-See [Intuos on Linux](http://www.levien.com/free/linux_intuos.html) by Terry Mackintosh, or this quick
overview from Juergen Schlag:
-
-1. run GNU/Linux with a X11 server which supports the Xinput-Section (my old S3-Board running under the
XFree-Server works well, but the XSuSE- Server for PERMEDIA2-Boards doesn't work :-(
-2. install the Xinput driver for the Artpad (see the docs). I used a patched driver for the PenPartner
-3. edit the Xinput-Section of your /etc/XF86Config to load the driver when X11 starts (see the man-pages
for XF86Config and your X-server)
-4. recompile the GTK toolkit with the Xinput-support enabled. see the README and INSTALL file for the
command switch to do this.
-5. restart your computer, start X11 and GIMP. if no error message occured your artpad should work well
-
-### Does GIMP have scanner support?
-
-Yes. It's available on Windows and uses TWAIN, and on GNU/Linux you even have a choice between XSane and
gnome-scan — both can be used as GIMP plug-ins.
-
-Further information is available at the [SANE project](http://www.sane-project.org/).
-
-### Can GIMP install its own colormap?
-
-Yes. In either the system-wide gimprc file or your personal gimprc file, uncomment the line that includes
_install-colormap_.
-
-### GIMP complains about MIT-SHM!
-
-If GIMP gives you a message similar to either of these when you try to start it: _Xlib: extension “MIT-SHM”
missing on display “198.51.29.58:0.0”._ or _* WARNING **: XShmAttach failed!_ then you need to run it with
the --no-xshm option.
-
-This happens for one of two reasons. Either your X display server does not have the shared memory option, or
you are running GIMP on a different system than the one on which it is displaying. In the former case, you
may wish to look into different X servers, because shared memory can give you MUCH better performance. In the
latter case, you will just have to live with it, since different systems can't generally share the same
memory space.
-
-### What does “wire_read: unexpected EOF” mean?
-
-This error message should say something like “the plug-in (or the main GIMP app) I was talking to has exited
before returning any results, so I assume that it has crashed.”
-
-### Do I need an X server to run in batch mode?
-
-Yes, you have to have some form of X server (unless you're running Windows, of course). It needs an X server
for image processing, and for font manipulation. However, if you wish to run in batch mode, you can run with
a special, frame-buffer-less X server called Xvfb, which doesn't require a graphics card or mess with your
screen:
-
-_Xvfb :1 -screen 0 10x10x8 -pixdepths 1 & gimp --display :1.0 --no-interface --batch "commands" ... &_
-
-The first command starts the special X server; the second is an example of how to invoke GIMP in batch mode.
When you are done using GIMP this way for a while, kill off Xvfb so it doesn't waste system resources. If you
expect to use GIMP this way a lot, you might want to leave Xvfb running for better response time.
-
-You should check the man page for Xvfb(1) for other options, such as whether to use shared memory.
-
-### What kind of system do I need to run GIMP?
-
-Any system capable of running Gnome 2, KDE 3.2, Windows 2000, Mac OS X and later versions should be able to
run GIMP. GIMP's biggest appetite is for memory and how much you will need will depend on the how many images
you are working with, their resolution, size, the number of layers you use and so on. As a general rule, more
is better, but 128MB should be enough to be getting started with.
-
-### Is there a bug list somewhere?
-
-See [Bugs](/bugs/) for a list of bugs and how to report them.
-
-### Does/could GIMP use high-level graphics operations for its operations?
-
-Not yet. GIMP does use MMX and SSE low-level instructions. The guess is that any gain from higher-level
instructions would end up being swamped by having to push pixels back and forth to the graphics card, but we
would love to be proved wrong :) The [GEGL project](http://www.gegl.org/) is a more logical place for this
kind of thing.
-
-### What does the future hold?
-
-Version 2.8 may bring a combined Transform tool (Scale, Rotate, Shear, Flip and Perspective), more use of
Cairo for beautiful antialiased graphics and more usability improvements. We will also make GIMP use more of
[GEGL](http://www.gegl.org/), namely for projection (everything you see in a visible stack of layers). This
will be another step to version 3.0, which will bring long requested features like support for 16+ bits per
channel and adjustment layers, to name a few.
-
-## Using GIMP
-
-### How can I draw a straight line with GIMP?
-
-See [Drawing a Straight Line](http://docs.gimp.org/en/gimp-using-simpleobjects.html#gimp-using-line) in the
GIMP user manual or see our [nice tutorial](/tutorials/Straight_Line/).
-
-### How can I draw a circle with GIMP?
-
-The easiest way is to create a new selection with Ellipse Select tool and stroke it (Edit → Stroke
Selection...). We welcome patches that add tools to draw geometric primitives on canvas.
-
-### How can I create an outline around text?
-
-Place some text somewhere. Then click “Create path from text” in the “Text tool option” window. Then use
“Edit” → “Stroke path” and select the appropriate options in the following dialog. Please also see the
[Paths](http://docs.gimp.org/en/gimp-concepts-paths.html) section in the user manual.
-
-### What are layers?
-
-The best analogy is to the way cartoons used to be animated. Each component of a scene would be painted on a
transparent film, and then each film would be stacked or layered over the other to produce the complete
composition. In this way, you could easily animate a person walking because his legs could be animated
independantly of his body, for example. Similarly, complex images can be broken down to layers within GIMP
and each layer can be processed independentlly of every other. See the
[Layers](http://docs.gimp.org/en/gimp-image-combining.html#gimp-concepts-layers) section in the manual for
more information.
-
-### How do I save a selected sub-image to a file?
-
-Use “Edit → Paste As → New Image” menu command or press Ctrl-Shift-V key combination, then save
newly created image.
-
-The script-fu-selection-to image can also be used to cut a selection out of an image and create a new image
with it.
-
-### How do I merge an image from a file to the current image?
-
-Use "File → Open As Layers" menu command or just drag the file to a window and drop it there. The file
will be added as a new layer on top of the layers stack.
-
-### How do I get small fonts to look as nice as large ones?
-
-Make sure you have "Hinting" and "Antialiasing" options enabled in Text tool options dialog.
-
-### How do I bind keys to menus for shortcuts?
-
-Make sure that "Use dynamic keyboard shortcuts" option in "Interface" tab of Preferences dialog is enabled,
then go to the menu selection you are interested in. Keeping it selected (hold the mouse's menu selection
down if necessary), press the key sequence you wish to assign to the menu. It will appear on the right of the
menu. The new binding will be saved and used in future GIMP sessions. You can also use "Keyboard Shortcuts"
dialog ("Edit → Keyboard Shortcuts") to assign keys to menus and functions.
-
-### How do I select a layer "sitting" under the mouse cursor? I have more than 400 layers in my image and I
cannot remember each layers name.
-
-Please turn on "move-tool-changes-active" in the preferences dialog. Then (after you did a restart of GIMP)
hold down the shift-key while you drag or click a layer in the image. The layer will now be selected (active).
-
-### I hate switching between windows in GIMP. Isn't there an easier way?
-
-You are probably using Windows or some GNU/Linux window manager that does not support the "Utility window"
hint. Right now you can use list of currently opened images in "Windows" menu.
-
-If you are using GNU/Linux or some free UNIX-like system and not willing to use GNOME and Metacity (its
window manager) which does support "Utility window" hint, alternatively you can use a window manager like
Fluxbox where you can apply this "always on top" property to the toolbox and layers dialogue. Window managers
like Fluxbox also allow you to focus, or even raise, a window whenever you move the mouse over it (usually
you have to click on a window before it will focus). Fluxbox allows you to stack windows together and the tab
between them, much like Firefox can tab between web pages. Combined with focus-follows-mouse, this may
increase one's workflow considerably. Fluxbox also requires very few resources meaning more memory for your
images. Finally, don't forget about keyboard shortcuts and modifiers. Learning these means you rarely have to
visit the toolbox.
-
-In the mean time, during 2.7.x development cycle we will do our best to switch to tabbed user interface with
docked palettes.
-
-### Is there a macro recording interface?
-
-Not at this time. With GIMP based on GEGL, so that all changes are non-destructive, it will be much easier
to implement this feature by just remembering all nodes in given range and reapplying them to other images.
This is something that can be part of a future release of GIMP like 3.0.
-
-### How do I configure my X server to do global gamma correction?
-
-Some servers have no facility for this; you may be able to adjust your monitor to correct somewhat. Later
versions of XFree86 allow these server options:
-
-* -gamma f set gamma value (0.1 < f < 10.0) Default: 1.0 -rgamma f set gamma value for red phase -ggamma f
set gamma value for green phase -bgamma f set gamma value for blue phase
-
-### How do I fill with transparent?
-
-If your image doesn't have an alpha channel, add one with Layers → Add Alpha Channel. Select the area
you want to clear (if not the whole image). To change everything of a particular color transparent, pick
Select → By Color... and click on the color in the image you want to replace. Then select Edit →
Clear. That's it.
-
-Any dithering, blurring, or related effects against the color you replace will be against the original
color. This usually requires you to do some form of cleanup of the edge pixels. In cases likely to result in
this, change the color to transparent as early as reasonably possible to preclude extra "cleanup" work.
-
-### How do I draw in a different color?
-
-At the bottom of the toolbar there is a box with two smaller boxes and an arrow. The uppermost box displays
the current foreground color; the lowermost box displays the current background color. You can single-click
on the arrow to switch these two. You can also double-click on either of the color boxes (or single-click if
that box is already selected) to pop up a color selection tool, with which you can elect any color you like
for that box. That color then becomes the new foreground or background color. Subsequent drawing operations
(including text and color fill) will now use these colors.
-
-### How can I export my path to SVG?
-
-Open the dialog "paths", right click the path you want to export, click "Export path..." and save it as
"yourpath.svg".
-
-### How do I do something really simple like blur?
-
-There are two methods, one for the current selection or current layer and one tool to blur using mouse. The
tool looks like a waterdrop. Click it (or use shortcut V) and hold down the left mouse button while moving
the mouse cursor over the desired area. Method two uses the blur filter (Filters → Blur filters →
Blur) and as said it applies to the current selection and/or layer.
-
-### I've tried to use GIMP but I just don't get it - what am I missing (and I know nothing about images so
dont start about alpha channels and layers, etc).
-
-There is plenty of documentation. See [http://docs.gimp.org/en/](http://docs.gimp.org/en/) If you need a
complete course about photoediting, image manipulation etc. then a book would be the best to start with.
- Example books:
- "Beginning GIMP: From Novice to Professional" - Akkana Peck
- "GIMP Pocket Reference" - Sven Neumann
- "Gimp: The Official Handbook" - Karin Kylander, Olof S. Kylander
- "GIMP Visual Quickstart Guide" - Phyllis Davis
- "Guerrilla Guide to Great Graphics With the Gimp" - David D. Busch
- and many many more! Check your local books-dealer!
-
-### How can I paint easily an (OutLined) rectangle using GIMP?
-
-Use "Rectangle Select" tool (see
[http://docs.gimp.org/en/gimp-tools-selection.html](http://docs.gimp.org/en/gimp-tools-selection.html)) for
making a selection in the form of a rectangle. Then use "Edit" → "Stroke Selection" (see
[http://docs.gimp.org/en/gimp-selection-stroke.html](http://docs.gimp.org/en/gimp-selection-stroke.html)).
The "Rectangle Select" tool has the shortcut "R".
-
-### How do I edit properties of existing guides? How do I move existing guides?
-
-Use the Move tool (Toolbox) or press M, then click and drag a guide. If the dragging moves the layer you
have to switch modes (hold the shift-key while dragging or click "Pick a layer or guide" in the Move Tool
options window). See "Grids and Guides" section of the online manual at
[http://docs.gimp.org/](http://docs.gimp.org/)
-
-### How do I select the layer currently shown under the mouse cursor? Is there a shortcut?
-
-There isn't a context menu or shortcut. But you can move visible layers (not overlapped by another one) with
the move tool (and holding down the shift key). Use the Move tool (Toolbox) or press M, then click and move a
layer. If the dragging moves the currently selected layer you have to switch modes (hold the shift-key while
dragging or click "Pick a layer or guide" in the Move Tool options window). This doesn't select the layer, it
only moves it. See "Move tool" section of the online manual at [http://docs.gimp.org/](http://docs.gimp.org/)
-
-### How can you wrap text using the Font tool? There are alignment buttons (including justified) but they
have little effect since I can't work out how to make the text wrap.
-
-Text cannot be wrapped automatically. But when you type some text in the text-editing dialog you can just
hit enter for a new line. In that case the alignment buttons would apply.
-
-### Why do I have to make my rectangular selection exactly right the first time? Why can't I move and resize
a rectangular selection using handles?
-
-You can, at least in version 2.3.10 of GIMP. (notice the small arrows at each edge of the rectangular
selection.)
-
-### I recently saw a project that specified files were to be saved in Photoshop "Save for Web → High
(15K to 30K Optimized)" format. Is there an equivalent in GIMP?
-
-Yes, there is a plug-in for GIMP which is called "Save for Web" and created by Aurimas Juška as a Google
Summer of Code SOC project. It allows visual adjustment of various image parameters such as quality, number
of colors, dimensions, etc to reach optimal file size.", see
[http://registry.gimp.org/node/33](http://registry.gimp.org/node/33).
-
-### How do I get GIMP to be by default image tool i.e. I installed another program & it is now associated to
auto-opening them.
-
-It depends on what operating system you are using.
-
-* **Windows**: Right-click on an image in explorer and select "Open with..." in the context menu. Select
GIMP and mark "Use this program as standard for openening this filetype". Now the filetype of that image
should be properly associated with GIMP.
-
-* **GNU/Linux (KDE)**: Right-click on an image in konqueror, select "Open with..." → "Other" in the
context menu, select GIMP and check the box "Associate filetype with this program".
-
-* For all other operating systems check the manual of the os.
-
-## Common Feature Requests
-
-### When can we see layer groups?
-
-GIMP 2.8 will have layer groups.
-
-### When can we see 16-bit per channel support (or better)?
-
-For some industries, especially photography, 24-bit colour depths (8 bits per channel) are a real barrier to
entry. Once again, it's GEGL to the rescue. Work on integrating GEGL into GIMP began after 2.4 was released,
and will span across several stable releases. This work will be completed in GIMP 3.0, which will have full
support for high bit depths. If you need such support now and can't wait,
[cinepaint](http://www.cinepaint.org/) and [Krita](http://www.krita.org/) support 16 bits per channel now.
-
-The current development branch, GIMP 2.9.x, supports higher bit depths than the 2.8 and older
8-Bit-per-component...
-
-### When can we see native CMYK support?
-
-It is clear from the [product vision](http://gui.gimp.org/index.php/GIMP_UI_Redesign#product_vision) that
GIMP eventually needs to support CMYK, but it is impossible to say when someone finds the free time and
motivation to add it. In the meantime it is possible to work with CMYK to some extent using plug-ins, such as
the [Separate+](http://cue.yellowmagic.info/softwares/separate-plus/index.html) plug-in.
-
-### When will an MDI/nested windows be implemented?
-
-GIMP will not get an MDI, but GIMP 2.8 will feature a single-window mode.
-
-### How should I make feature requests?
-
-The first thing to do is see if your request has already been made. It probably has; we get a lot of feature
requests. Check the [user](https://lists.xcf.berkeley.edu/lists/gimp-user/) and
[developer](https://lists.xcf.berkeley.edu/lists/gimp-developer/) mailing-list archives and search
[bugzilla](https://bugzilla.gnome.org/query.cgi). If you find a discussion that seems relevant, feel free to
add your two penneth.
-
-If you are making a new feature request, please make it to the gimp-user or -developer mailing list first
and _not_ bugzilla. Think about what it is you are trying to achieve with your request and not about what the
underlying procedure is. We get a lot of requests from Photoshop users who simply ask for their favourite
Photoshop tool without saying what it does and why it is useful to them. Once we understand what the tool is
for, we may find that we can do it better, or that the way it works in Photoshop isn't suitable for GIMP's
interface, or that GIMP already supports the feature, but in a different way.
-
-Once the feature has been discussed on the mailing list, a bug report should be opened so that record can be
kept on its progress.
-
-Sven Neumann has this to say on the matter of a "polygon select" feature requests:
-
-* No tool should be written without doing a full specification beforehand and discussing this spec on the
mailing-list(s). Bugzilla is the wrong place for such a discussion. If you want to do something to help,
please make a list of usage scenarios that involve creating polygonal selections. Then analyze how these
scenarios can be performed using the existing tools and identify problems.
-
- With the list of scenarios and problems, you are then able to analyze and to compare different possible
solutions. These solutions might involve changing existing tools or adding new one(s). As soon as we have
identified the best solution, it can be fully specified. Only then can someone can start to implement it.
-
-## Plug-Ins
-
-### What are plug-ins?
-
-Plug-ins are external modules that actually do the nifty graphics transformations. There is a plug-in
registry at [http://registry.gimp.org/](http://registry.gimp.org/) with the latest plug-ins, maintained by
Ingo Lütkebohle. [Special thanks to Adam Moss for the original registry!]
-
-### How do I add new plug-ins?
-
-First, copy the plug-in[s] to your plug-in directory (typically /usr/local/lib/gimp/$VERSION/plug-ins/).
-
-After copying the plug-in to its proper directory, just run GIMP. It should automatically find new plug-ins.
-
-### How do I build new plug-ins?
-
-You'll need a copy of the source directories. Build GIMP. Place the new plug-in in the plug-ins directory.
The docs with the new plug-in hopefully identify any special libraries it needs. Look for a plug-in with
similar libraries (if all else fails, look at xpm and whirlpinch).
-
-With newer versions, if the plug-in is contained in a single source file, you should just have to run
gimptool in the plug-in's directory :
-
-* gimptool --build plugin.c
-
-For older versions, there are several methods. The first two walk you through a number of steps manually;
these are the most thorough, but also require more work on your part. The last ones are scripts of one sort
or another, and are easier on your part -- if they work with your system. Go ahead and try - you can always
fall back on the first methods.
-
-* The best way to procede is to edit the Makefile. Pick a similar plug-in (such as whirlpinch). For the
SRC and OBJ lines, just add entries similar to the others, but with the new plug-in's name. Now, find all the
groups of lines with the other plug-in's name in them, duplicate them, and change the old name to the new
name. The one exception is the huge set of lines that have a lot of paths that end in .h - do not bother with
these. Now, just type
-
- * make
-
- * and it should build. Install it wherever your other plug-ins are installed.
-
-* A second choice for those who don't want to mess with the main Makefile is to build a file to create
just the new plug-in. Start the same way - pick a similar plug-in. Now remove the binary and object files for
the one you just picked. For instance, if you selected the whirlpinch plug-in, you will see the following
files:
-
- * whirlpinch whirlpinch.c whirlpinch.o
-
- * In this case, you would remove the first and last files, leaving the whirlpinch.c file. Now type
-
- make
-
- * to rebuild the old plug-in.
-
- Copy the output (cut and paste it!) into a file. Edit the file and change all occurances of
"whirlpinch" (or whatever) to the name of the new plug-in. Execute the file you just edited. For instance, if
the file is make_plug-in, just type
-
- make_plugin
-
- * and it should work. The copy the plug-in to wherever the others are installed on your system.
-
-* A Makefile
-
- * First, load Makefile-pi provided by Ciccio C. Simon . Change all occurances of the word sharpen in
Makefile-pi to the name of the new plug-in. Then type
-
- * make -f Makefile-pi
-
- * and watch it (hopefully) work.
-
- If it doesn't work, try the next method.
-
-* A compile script
-
- * First, load the compile-pi script provided by Jeremy Dinsel . Change the permissions on compile-pi
as follows:
-
- * chmod ugo+rx compile-pi
-
- * and type
-
- compile-pi help
-
- * for instructions. Follow those instructionms. If this one also fails, go back to the earlier,
manual methods; you have too picky a configuration for the simple methods to work.
-
-If you need more help, ask your system administrator or a handy programmer, or get a good book on make (such
as O'Reilly's). You may want to join the GIMP developer's list as well (see the Developer FAQ).
-
-### Is there a plug-in for ... ?
-
-The plug-in registry referenced above is the place to check.
-
-### Why did some plug-ins disappear for 0.99.19?
-
-Some of the plug-ins have proven unstable. These have been moved into a separate download, which should be
available wherever you got the GIMP, in the file gimp-plugins-unstable-VERSION.tar.gz or
gimp-plugins-unstable-VERSION.tar.bz2 .
-
-Since this list may change frequently, the unstable plug-ins are no longer listed here. Script-Fu
-
-### What is Script-Fu?
-
-In the words of S&P:
-
-* Script-Fu is the first GIMP scripting extension. Extensions are separate processes that communicate with
the GIMP in the same way that plug-ins do. The distinction is that extensions don't require an active image
to operate on, instead extending GIMP's functionality. GIMP internals for version 1.0 have been completely
overhauled from version 0.54\. In particular, the plug-in API has been made far more general with the advent
of the procedural database (PDB). The PDB allows GIMP and its plug-ins to register procedures which can then
be called from anywhere: internally, from extensions, and from plug-ins. There are already over 200 internal
GIMP procedures, and more being created all the time. Because all of these procedures can be easily invoked
from extensions, the logical next step was to create a scripting facility; thus, Script-Fu was born.
-
-### Where can I learn about Script-Fu?
-
-As with plug-ins, web pages, COBOL, or anything else, one of the best things you can do is look at other
peoples' code, and play with it. But it helps a lot if you know Scheme.
-
-* = S&P's Script-Fu pages at
[http://www.xcf.berkeley.edu/~gimp/script-fu/script-fu.html](http://www.xcf.berkeley.edu/~gimp/script-fu/script-fu.html)
= Mike Terry's Black Belt School of Script-Fu at
[http://manual.gimp.org/manual/GUM/write_scriptfu3.html](http://manual.gimp.org/manual/GUM/write_scriptfu3.html)
-
-### How do I call one script-fu script from another?
-
-The trick to calling script-fu-scripts from another script is to just reference the main define for the
script and not to try to use the pdb call. All the scripts in script-fu share a common name space; you call
other scripts just like a regular function / define / whatever you call those those things in_scheme.
-
-Ie, to call script-fu-predator in a script, just use
-
-* (script-fu-predator img drawable 2 TRUE 3 TRUE TRUE)
-
-For examples, see
-
-* [http://adrian.gimp.org/scripts/test.scm](http://adrian.gimp.org/scripts/test.scm) .
-
-### How do I call a plug-in from script-fu?
-
-The following examples assume the plug-in name is "plug_in_randomize_hurl", and the plug-in has four
parameters specific to it, the first two of which are floats, and the next two ints.
-
-From the script-fu console, call a plug-in like this:
-
- (plug-in-name 1 0 0 100.0 1.0 10 0)
-
-The first parameter should always be a "1". The next two are the image number and drawable. Anything
following these numbers will be plug-in parameters, which depend on the plug-in.
-
-Inside an actual script, call a plug-in like this:
-
- (define (script-fu-fred img drawable)
-
- (plug-in-randomize-hurl 1 img drawable 100.0 1.0 10 0)
- (gimp-displays-flush)
-
- )
-
- (script-fu-register "script-fu-fred" "<Image>/Script-Fu/fred"
- "Randomize test" "Miles O'Neal <meo rru com>" "Miles O'Neal"
- "1998/May/1" "RGB*, GRAY*, INDEXED*" SF-IMAGE "Image" 0 SF-DRAWABLE
- "Drawable" 0)
-
-### How do I execute script-fu from batch mode?
-
-Invoke the script as non-interactive and add a pair of escaped quotes around each string just like you do in
(script-fu-register). You DO NOT need to replace '-' with '\_' in any names or registrations.
-
-Example script:
-
- (define (script-fu-famhist-link text filename) ;; code ommitted
- for brevity (file-gif-save 1 img 0 filename "" FALSE FALSE 0 0))
-
- (script-fu-register "script-fu-famhist-link"
- "<Toolbox>/Xtns/Script-Fu/Family Historian/Link" "Family Historian
- Link" "John Johnson" "John Johnson" "1998" "" SF-VALUE "Text String"
- "\"Family Historian\"" SF-VALUE "Base filename" "\"foo\"")
-
- Example Invocation:
-
- ;; note the '1' as the first argument tell it to run non-interactivly ;;
- note the \" \" pairs around the strings
-
- gimp -n -b '(script-fu-famhist-link 1 "\"Introduction\"" \
- "\"intro.gif\"")' '(gimp-quit 0)'
-
-For a detailed, step by step explanation, check out Adrian's GIMP Batch Mode how-to at
[http://adrian.gimp.org/batch/](http://adrian.gimp.org/batch/) .
-
-### What does "procedural-database-error" in script-fu mean?
-
-Normally it means that the script is trying to use a particular font that isn't available on your system -
it's either not installed or not in your X server's FONTPATH. The base script-fu package makes extensive use
of the freefont package, and at least one font (AlfredDrake) from the sharefont package.
-
-### What is Net-Fu? Where is it?
-
-Net-fu is a web-based interface to a script-fu server. The work is done at a remote site. To see Net-fu,
point your web browser at [http://download.gimp.org/](//download.gimp.org/) or one of the mirror sites, and
then go to "pub/gimp/net-fu/". Any web browser can read net-fu pages; the browser must be Java-enabled to
actually run Script-fu. Fonts
-
-### Where can I get the fonts I'm missing?
-
-The freefonts and sharefonts packages are both available from
[ftp://ftp.funet.fi/pub/Linux/mirrors/metalab/X11/fonts/](ftp://ftp.funet.fi/pub/Linux/mirrors/metalab/X11/fonts/)
or other metalab mirrors. If you get the sharefonts package, be sure and read the various licensing
agreements, and abide by them.
-
-### How can I change the GIMP font?
-
-You need to copy the gtkrc file that comes with the GIMP source (in the top level directory) into
$HOME/.gimp/gtkrc . As of 0.99.10, this should be recognized. You then go in and edit the default font style,
the one that looks like this:
-
- style "default" { font =
- "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" }
-
-I'm sure ther's a lot of clever stuff that can be done here, and I'll try to track it down soon, but in the
meantime, just change that "100" to something larger, like "120" or "140". (The number is points= 10, so 100
is a 10 point font).
-
-Obviously, you could stick in any font you have available.
-
-### Why don't the Far Eastern fonts work?
-
-These are 16 bit fonts, with thouousands and thouousands of characters. And the characters are more complex,
which means (usually) more bits per character, which means more memory and more processing time.
-
-This includes fonts such as kana, kanji, song ti, mincho and gothic. (If you look carefully at the fully
qualified font name for gothic via xfontsel, you'll see clues. It's a daewoo font. The gothic name is
misleading to western minds, but no doubt means something to its author[s].)
-
-Check one of these out in a program that shows a font as pages (such as xfd).. You can keep hitting next
page to see a new page of characters, almost forever.
-
-### What about TrueType fonts?
-
-If neither your X server nor your X font server supports you can try one of the TruType font servers: xfstt
([http://sunsite.unc.edu/pub/Linux/X11/fonts/](http://sunsite.unc.edu/pub/Linux/X11/fonts/)) or xfsft
([http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/](http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/) .
-
-xfstt supposedly has limitations on the font size. File Formats
-
-### What is GIMP's native graphics file format?
-
-XCF is GIMP's "native" format. This will preserve all information about an image, including the layers.
-
-### What other graphics file types are supported?
-
-All the common formats, and many more as well, including GIF, TIFF, JPEG, XBM, XPM, PostScript, and BMP.
Plug-ins are used to load and save files so adding new file types is very simple, compared to other graphics
programs.
-
-As of July 1, 1998, the list of supported types included BMP, CEL, FITS, FLI, GBR, Gicon, GIF, GIcon, HRZ,
JPEG, PAT, PCX, PIX, PNG, PNM, PostScript, SGI, Sun Raster, TGA, TIFF, XPM, XWD and XCF. Bzipped, Gzipped and
Xdelta'd files are understood, and URL support is provided.
-
-Of course, plug-ins for other types may be available at the plug-in registry .
-
-* Why can't I save my image as a GIF (or whatever)?
-
-The two most likely problems are related to image type and layers. For instance, your image type must be
"Indexed" for GIF, but "RGB" for TIFF. Try a different image type (look under the "Image" menu). If you have
more than 1 layer in your image, you probably need to merge the visible layers, and/or "flatten" the image.
Both operations are available under the "Layers" menu or from the "Layers" dialog. Flattening will destroy
any background transparency.
-
-### Is there any way to keep the layers when I save?
-
-Yes; GIMP has a file format just for this - the XCF format.
-
-### Why can't I open or export JPEG / JPG files?
- Why can't I open or export GIF files?
- Why can't I open or export PNG files?
- Why can't I open or export XPM files?
- Why can't I open or export TIFF / TIF files?
- Why can't I open or export PSD files?
- Why can't I open or export SOME_FORMAT files?
-
-There are several possibilities.
-
-1. GIMP comes with full support for a few types built in. If the type you want doesn't appear in file type
format of the Open and Export dialogs, you need to check the Plug-in registry to see whether you need to
download an optional plug-in.
-2. Some of the file types, such as JPEG and TIFF, require extra libraries (described elsewhere). Make sure
you have the correct versions of these on your system.
-
-## Troubleshooting Unix Platforms
-
-### Why can't I get JPEG to work on my Digital Alpha/UNIX (4.0d) box?
-
-Even the jpeg libraries at the GIMP web site may not work for all versions. If their jpeg-shared-6.a.tar.gz
package doesn't work for you, try:
-
-* [ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz](ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz)
-
-### Why won't GIMP compile on 64-bit or IRIX (SGI) machines?
-
-If you are using a 64-bit OS, you need to add the `-o32` option for the compiler, or use gcc.
-
-With the SGI compiler, you may also need to play with optimization.
-Some modules may have exhibit problems unless compiled with `-O1` or even `-O0`.
-
-### Script-Fu won't compile on IRIX (SGI)
-
-Script-Fu requires the POSIX-compliant regex functions, which SGI only supports with IRIX 6.2 and later
versions. The GNU version of regex should work just fine, though, and is available at:
-
-*
[http://wuarchive.wustl.edu/systems/gnu/regex-0.12.tar.gz](http://wuarchive.wustl.edu/systems/gnu/regex-0.12.tar.gz)
-
-### Why does GIMP complain about X Input Methods under Solaris?
-
-GIMP is interacting in such a way with your system that it thinks you have XIM extensions when you don't.
Run the configure script again, with the `--disable-xim` option, and recompile.
-
-You can also try compiling with `--disable-shared`.
-
-Or you can install a version of X11R6\. 8^)
-
-### How do I add fonts with Solaris?
-
-If you just want to use freefonts or sharefonts, you can copy these files into the appropriate directory
(such as /usr/openwin/lib/fonts/freefonts/ or /usr/openwin/lib/fonts/sharefonts/), or merge them with the
appropriate fonts.dir and fonts.scale files if you mixed in freefonts and sharefonts with existing fonts:
-
-* freefonts fonts.dir
-
-* freefonts fonts.scale
-
-* sharefonts fonts.dir
-
-* sharefonts fonts.scale
-
-Or just try using fontadmin instead of mkfontdir .
-
-I've never run into a Solaris system missing this, but according to Neil Corlett:
-
-* The 'fontadmin' tool is a openwin demo program and sometimes does not exist. To properly add fonts the
finagled directory requires fonts.dir, fonts.scale files to exist. mkfontdir does the first of these OK. For
the second I built groff and downloaded type1inst-0.6.1 from an X contrib archive. type1inst (which needs
groff) will build the fonts.scale file from the pfb files automatically.
-
-Solaris 2.6 is supposed to include better font editor and admin tools.
-
-### How do I add fonts with SunOS?
-
-SunOS ships with an X11R4 server, which does not handle either scaleable fonts or communications with the X
font server. If you want to use the freefonts (or any scalable fonts) on SunOS, you need to install your own,
newer X server, preferably X11R6.4 (which will be much faster than the server shipped with SunOS).
-
-If you do this, you will no longer have PostScript capability directly in your X server; you will need to
use ghostscript. You may well want to keep both servers around, and use each when you need its features.
-
-Of course, you could always try to find a PS version of the font you need and make a bitmap for the size you
need and add that to the X11R4 server's font path, but if you need more than one or two font/size
combinations over all the time you use GIMP, this is an obnoxious solution.
-
-### What is the gimp.wmconfig file?
-
-* It's a Red Hat RPM-related file, related to their desktop and window manager.
-
-#### Why does my RedHat system get <span class="u">register_? errors when I run GIMP? ####
-This is due to incompaitble RPMS. If (for example) gtk was compiled with egcs, GIMP must be compiled with
egcs. There is no easy way to tell what is compiled with what, so getting both GIMP and gtk off a GIMP mirror
would be a good idea.</span>
-
-Another possibility is for this error (far less common) is that there is an old library compiled with the
other hanging around somewhere on the system. Remove old copies of libgimp.
-
-### Why don't GIF and JPEG work on Slackware Linux?
-
-* You need to manually get libgif and libjpeg and compile and install them on your system. They will
install by default in /usr/local/lib, so once they're installed, you have to make sure that
LD_LIBRARY_PATH=/usr/local/lib or put /usr/local/lib in your ld.so configuration file. In addition, you also
have to remove libgif.* and libjpeg.* from your /usr/lib directory, as these will be found first (and even if
you finagle ld.so to find the other libs first, they're still broken so remove them anyway).
-
-### I get make errors on {Solaris, HP/UX, whatever}.
-
-You are probably not using the GNU make. Most, if not all, non-GNU makes will fail on the GIMP makefiles.
Get the GNU make package.
-
-### Why do I see weird things when I use GIMP with AcceleratedX?
-
-It's a bug in AcceleratedX with shared memory. Turn off shared memory when you start GIMP (--no-xshm) or
pick up the patch to AcceleratedX's X server from
[ftp://ftp.xinside.com/pub/update/](ftp://ftp.xinside.com/pub/update/) .
-
-At least one person has found this bug (or another one with the same symptoms) to still be present in 4.1 .
-
-### What's this beavis.jpg image used in several scripts?
-
-(/usr/local/share/gimp/scripts/beavis.jpg is the B/W image in question.)
-
-The image (of a kitten playing with Gumby) is used as "sorta random, sorta not" data to generate (for
example) the crystal bands, or other texture maps. There are other ways to produce this data as well, but the
author stuck with this one, found in a tutorial somewhere.
-
-#### What lucky human does this adorable cat own?
-
-One of the original GIMP authors, Spencer Kimball or Peter Mattis, we forgot which.
-
-## Footnotes
-
-Portions of this FAQ have been taken from
[http://www.rru.com/~meo/gimp/faq-user.html](http://www.rru.com/~meo/gimp/faq-user.html)
+Title: Frequency Asked Questions (Old)
+Date: 2015-08-14T15:07:00-05:00
+Author: Pat David
+
+
+
+_This FAQ is still a work in progress. Some sections are very outdated, other sections should probably be
removed, and some new questions and answers should be added. Please [contact us](/webmasters.html) if you can
improve it._
+
+[TOC]
+
+## General Information
+
+### What is this GIMP?
+
+The “GNU Image Manipulation Program” (originally the General Image Manipulation Program) sired by Spencer
Kimball & Peter Mattis.
+
+In their own words, “GIMP is our answer to the current lack of free (or at least reasonably priced) image
manipulation software for GNU/Linux and UNIX in general.”
+
+It is a raster editor, which means that it performs operations directly on the pixels that make up the
image, and not a vector editor. Other (proprietary) raster editors include Adobe Photoshop, Jasc Paintshop
Pro and the humble Microsoft Paint. An alternative free editor is [Krita](http://www.krita.org/). Users
wanting to edit photographs will certainly want a raster editor like GIMP. Graphic designers and illustrators
may prefer a vector editor depending on their tastes.
+
+### Where do I get it?
+
+Most (if not all) GNU/Linux distributions will support GIMP through their package management systems and may
even come with GIMP preinstalled. You can find the latest version for GNU/Linux, Microsoft Windows and Apple
Mac OS X on [the download page](/downloads/). Of course, this is [free
software](http://www.gnu.org/philosophy/free-sw.html) so the [source code](/source/) is available to, along
with instruction on how to compile it.
+
+### Why and when was GIMP changed from “general image manipulation program” to “GNU image manipulation
program”?
+
+One day (I believe it was in 1997) RMS visited Berkeley, and Spencer and Peter met with him. They asked if
they could change General to GNU, and it was done.
+
+### GIMP is a stupid name. Why can't you change it?
+
+GIMP is comfortable with its name and thinks that you should apologise for your rudeness.
+
+### Is GIMP a GNOME application?
+
+Not really. It doesn't use the GNOME application framework. The only thing it has in common is GTK+. GIMP
can optionally use gnome-vfs, allowing you to load and edit images from remote servers.
+
+### Is GTK+ still under the aegis of GIMP? Was it ever?
+
+GTK was developed solely for GIMP, initially. Towards the end of the 0.99 development cycle in 1998, GTK was
split from being bundled with GIMP to being a separately available library. See [ancient
history](/about/ancient_history.html) for some interesting tidbits from the GIMP perspective.
+
+### Which version should I use?
+
+You should use the latest stable release. See our [downloads page](/downloads/).
+
+### Is there a user manual?
+
+Yes. It is available in [HTML](http://docs.gimp.org/) form, and in [PDF](http://docs.gimp.org/download.html).
+
+### What about a Windows version?
+
+See [the download page](/downloads/).
+
+### What about a Mac version?
+
+See [the download page](/downloads/).
+
+### Are there any Easter eggs in GIMP?
+
+Yes.
+
+### Is there a mailing list?
+
+See our list of [Mailing Lists](/mail_lists.html).
+
+### Is there an IRC channel?
+
+See our list of [IRC channels](/irc.html).
+
+### Why does GIMP complain about missing or wrong versions of libraries?
+
+Probably because it can't find them.
+
+_FIXME: some of the advice given here is incorrect and even dangerous._
+
+There are a couple of solutions. The best one, if you have superuser access on your system, or a cooperative
system administrator, is to add GIMP's library directory to the system library configuration. To do this,
edit /etc/ld.so.conf to include /usr/local/lib and then type _ldconfig_ and things should work from then on.
+
+If you can't do this, add the directory to your LD_LIBRARY_PATH environment variable. Be sure you do this in
your shell's startup scripts as well.
+
+If you have old versions of the libraries, you will probably need to remove them first, especially if they
are in standard system locations such as /usr/lib . Don't just delete them, though; move them somewhere safe,
install the new ones, and try again. Then make sure everything else still works; you may have other programs
on your system which require the old versions. The ideal response in such a case is to rebuild all the
programs to use the new libraries. Where this isn't possible, you will just have to experiment with trying
them in different locations, or statically linking them to one or more programs.
+
+### Is XInput support available?
+
+Yes.
+
+### Does GIMP support art tablets like the Wacom?
+
+_FIXME: obsolete advice._
+
+In the more recent releases of most distros, installing the wacom-tools package should make tablet support
“just work”. Make sure that you enable the input devices in GIMP, too.
+
+Otherwise, you have to do a little extra work to compile it in.
+
+See [Intuos on Linux](http://www.levien.com/free/linux_intuos.html) by Terry Mackintosh, or this quick
overview from Juergen Schlag:
+
+1. run GNU/Linux with a X11 server which supports the Xinput-Section (my old S3-Board running under the
XFree-Server works well, but the XSuSE- Server for PERMEDIA2-Boards doesn't work :-(
+2. install the Xinput driver for the Artpad (see the docs). I used a patched driver for the PenPartner
+3. edit the Xinput-Section of your /etc/XF86Config to load the driver when X11 starts (see the man-pages
for XF86Config and your X-server)
+4. recompile the GTK toolkit with the Xinput-support enabled. see the README and INSTALL file for the
command switch to do this.
+5. restart your computer, start X11 and GIMP. if no error message occured your artpad should work well
+
+### Does GIMP have scanner support?
+
+Yes. It's available on Windows and uses TWAIN, and on GNU/Linux you even have a choice between XSane and
gnome-scan — both can be used as GIMP plug-ins.
+
+Further information is available at the [SANE project](http://www.sane-project.org/).
+
+### Can GIMP install its own colormap?
+
+Yes. In either the system-wide gimprc file or your personal gimprc file, uncomment the line that includes
_install-colormap_.
+
+### GIMP complains about MIT-SHM!
+
+If GIMP gives you a message similar to either of these when you try to start it: _Xlib: extension “MIT-SHM”
missing on display “198.51.29.58:0.0”._ or _* WARNING **: XShmAttach failed!_ then you need to run it with
the --no-xshm option.
+
+This happens for one of two reasons. Either your X display server does not have the shared memory option, or
you are running GIMP on a different system than the one on which it is displaying. In the former case, you
may wish to look into different X servers, because shared memory can give you MUCH better performance. In the
latter case, you will just have to live with it, since different systems can't generally share the same
memory space.
+
+### What does “wire_read: unexpected EOF” mean?
+
+This error message should say something like “the plug-in (or the main GIMP app) I was talking to has exited
before returning any results, so I assume that it has crashed.”
+
+### Do I need an X server to run in batch mode?
+
+Yes, you have to have some form of X server (unless you're running Windows, of course). It needs an X server
for image processing, and for font manipulation. However, if you wish to run in batch mode, you can run with
a special, frame-buffer-less X server called Xvfb, which doesn't require a graphics card or mess with your
screen:
+
+_Xvfb :1 -screen 0 10x10x8 -pixdepths 1 & gimp --display :1.0 --no-interface --batch "commands" ... &_
+
+The first command starts the special X server; the second is an example of how to invoke GIMP in batch mode.
When you are done using GIMP this way for a while, kill off Xvfb so it doesn't waste system resources. If you
expect to use GIMP this way a lot, you might want to leave Xvfb running for better response time.
+
+You should check the man page for Xvfb(1) for other options, such as whether to use shared memory.
+
+### What kind of system do I need to run GIMP?
+
+Any system capable of running Gnome 2, KDE 3.2, Windows 2000, Mac OS X and later versions should be able to
run GIMP. GIMP's biggest appetite is for memory and how much you will need will depend on the how many images
you are working with, their resolution, size, the number of layers you use and so on. As a general rule, more
is better, but 128MB should be enough to be getting started with.
+
+### Is there a bug list somewhere?
+
+See [Bugs](/bugs/) for a list of bugs and how to report them.
+
+### Does/could GIMP use high-level graphics operations for its operations?
+
+Not yet. GIMP does use MMX and SSE low-level instructions. The guess is that any gain from higher-level
instructions would end up being swamped by having to push pixels back and forth to the graphics card, but we
would love to be proved wrong :) The [GEGL project](http://www.gegl.org/) is a more logical place for this
kind of thing.
+
+### What does the future hold?
+
+Version 2.8 may bring a combined Transform tool (Scale, Rotate, Shear, Flip and Perspective), more use of
Cairo for beautiful antialiased graphics and more usability improvements. We will also make GIMP use more of
[GEGL](http://www.gegl.org/), namely for projection (everything you see in a visible stack of layers). This
will be another step to version 3.0, which will bring long requested features like support for 16+ bits per
channel and adjustment layers, to name a few.
+
+## Using GIMP
+
+### How can I draw a straight line with GIMP?
+
+See [Drawing a Straight Line](http://docs.gimp.org/en/gimp-using-simpleobjects.html#gimp-using-line) in the
GIMP user manual or see our [nice tutorial](/tutorials/Straight_Line/).
+
+### How can I draw a circle with GIMP?
+
+The easiest way is to create a new selection with Ellipse Select tool and stroke it (Edit → Stroke
Selection...). We welcome patches that add tools to draw geometric primitives on canvas.
+
+### How can I create an outline around text?
+
+Place some text somewhere. Then click “Create path from text” in the “Text tool option” window. Then use
“Edit” → “Stroke path” and select the appropriate options in the following dialog. Please also see the
[Paths](http://docs.gimp.org/en/gimp-concepts-paths.html) section in the user manual.
+
+### What are layers?
+
+The best analogy is to the way cartoons used to be animated. Each component of a scene would be painted on a
transparent film, and then each film would be stacked or layered over the other to produce the complete
composition. In this way, you could easily animate a person walking because his legs could be animated
independantly of his body, for example. Similarly, complex images can be broken down to layers within GIMP
and each layer can be processed independentlly of every other. See the
[Layers](http://docs.gimp.org/en/gimp-image-combining.html#gimp-concepts-layers) section in the manual for
more information.
+
+### How do I save a selected sub-image to a file?
+
+Use “Edit → Paste As → New Image” menu command or press Ctrl-Shift-V key combination, then save
newly created image.
+
+The script-fu-selection-to image can also be used to cut a selection out of an image and create a new image
with it.
+
+### How do I merge an image from a file to the current image?
+
+Use "File → Open As Layers" menu command or just drag the file to a window and drop it there. The file
will be added as a new layer on top of the layers stack.
+
+### How do I get small fonts to look as nice as large ones?
+
+Make sure you have "Hinting" and "Antialiasing" options enabled in Text tool options dialog.
+
+### How do I bind keys to menus for shortcuts?
+
+Make sure that "Use dynamic keyboard shortcuts" option in "Interface" tab of Preferences dialog is enabled,
then go to the menu selection you are interested in. Keeping it selected (hold the mouse's menu selection
down if necessary), press the key sequence you wish to assign to the menu. It will appear on the right of the
menu. The new binding will be saved and used in future GIMP sessions. You can also use "Keyboard Shortcuts"
dialog ("Edit → Keyboard Shortcuts") to assign keys to menus and functions.
+
+### How do I select a layer "sitting" under the mouse cursor? I have more than 400 layers in my image and I
cannot remember each layers name.
+
+Please turn on "move-tool-changes-active" in the preferences dialog. Then (after you did a restart of GIMP)
hold down the shift-key while you drag or click a layer in the image. The layer will now be selected (active).
+
+### I hate switching between windows in GIMP. Isn't there an easier way?
+
+You are probably using Windows or some GNU/Linux window manager that does not support the "Utility window"
hint. Right now you can use list of currently opened images in "Windows" menu.
+
+If you are using GNU/Linux or some free UNIX-like system and not willing to use GNOME and Metacity (its
window manager) which does support "Utility window" hint, alternatively you can use a window manager like
Fluxbox where you can apply this "always on top" property to the toolbox and layers dialogue. Window managers
like Fluxbox also allow you to focus, or even raise, a window whenever you move the mouse over it (usually
you have to click on a window before it will focus). Fluxbox allows you to stack windows together and the tab
between them, much like Firefox can tab between web pages. Combined with focus-follows-mouse, this may
increase one's workflow considerably. Fluxbox also requires very few resources meaning more memory for your
images. Finally, don't forget about keyboard shortcuts and modifiers. Learning these means you rarely have to
visit the toolbox.
+
+In the mean time, during 2.7.x development cycle we will do our best to switch to tabbed user interface with
docked palettes.
+
+### Is there a macro recording interface?
+
+Not at this time. With GIMP based on GEGL, so that all changes are non-destructive, it will be much easier
to implement this feature by just remembering all nodes in given range and reapplying them to other images.
This is something that can be part of a future release of GIMP like 3.0.
+
+### How do I configure my X server to do global gamma correction?
+
+Some servers have no facility for this; you may be able to adjust your monitor to correct somewhat. Later
versions of XFree86 allow these server options:
+
+* -gamma f set gamma value (0.1 < f < 10.0) Default: 1.0 -rgamma f set gamma value for red phase -ggamma f
set gamma value for green phase -bgamma f set gamma value for blue phase
+
+### How do I fill with transparent?
+
+If your image doesn't have an alpha channel, add one with Layers → Add Alpha Channel. Select the area
you want to clear (if not the whole image). To change everything of a particular color transparent, pick
Select → By Color... and click on the color in the image you want to replace. Then select Edit →
Clear. That's it.
+
+Any dithering, blurring, or related effects against the color you replace will be against the original
color. This usually requires you to do some form of cleanup of the edge pixels. In cases likely to result in
this, change the color to transparent as early as reasonably possible to preclude extra "cleanup" work.
+
+### How do I draw in a different color?
+
+At the bottom of the toolbar there is a box with two smaller boxes and an arrow. The uppermost box displays
the current foreground color; the lowermost box displays the current background color. You can single-click
on the arrow to switch these two. You can also double-click on either of the color boxes (or single-click if
that box is already selected) to pop up a color selection tool, with which you can elect any color you like
for that box. That color then becomes the new foreground or background color. Subsequent drawing operations
(including text and color fill) will now use these colors.
+
+### How can I export my path to SVG?
+
+Open the dialog "paths", right click the path you want to export, click "Export path..." and save it as
"yourpath.svg".
+
+### How do I do something really simple like blur?
+
+There are two methods, one for the current selection or current layer and one tool to blur using mouse. The
tool looks like a waterdrop. Click it (or use shortcut V) and hold down the left mouse button while moving
the mouse cursor over the desired area. Method two uses the blur filter (Filters → Blur filters →
Blur) and as said it applies to the current selection and/or layer.
+
+### I've tried to use GIMP but I just don't get it - what am I missing (and I know nothing about images so
dont start about alpha channels and layers, etc).
+
+There is plenty of documentation. See [http://docs.gimp.org/en/](http://docs.gimp.org/en/) If you need a
complete course about photoediting, image manipulation etc. then a book would be the best to start with.
+ Example books:
+ "Beginning GIMP: From Novice to Professional" - Akkana Peck
+ "GIMP Pocket Reference" - Sven Neumann
+ "Gimp: The Official Handbook" - Karin Kylander, Olof S. Kylander
+ "GIMP Visual Quickstart Guide" - Phyllis Davis
+ "Guerrilla Guide to Great Graphics With the Gimp" - David D. Busch
+ and many many more! Check your local books-dealer!
+
+### How can I paint easily an (OutLined) rectangle using GIMP?
+
+Use "Rectangle Select" tool (see
[http://docs.gimp.org/en/gimp-tools-selection.html](http://docs.gimp.org/en/gimp-tools-selection.html)) for
making a selection in the form of a rectangle. Then use "Edit" → "Stroke Selection" (see
[http://docs.gimp.org/en/gimp-selection-stroke.html](http://docs.gimp.org/en/gimp-selection-stroke.html)).
The "Rectangle Select" tool has the shortcut "R".
+
+### How do I edit properties of existing guides? How do I move existing guides?
+
+Use the Move tool (Toolbox) or press M, then click and drag a guide. If the dragging moves the layer you
have to switch modes (hold the shift-key while dragging or click "Pick a layer or guide" in the Move Tool
options window). See "Grids and Guides" section of the online manual at
[http://docs.gimp.org/](http://docs.gimp.org/)
+
+### How do I select the layer currently shown under the mouse cursor? Is there a shortcut?
+
+There isn't a context menu or shortcut. But you can move visible layers (not overlapped by another one) with
the move tool (and holding down the shift key). Use the Move tool (Toolbox) or press M, then click and move a
layer. If the dragging moves the currently selected layer you have to switch modes (hold the shift-key while
dragging or click "Pick a layer or guide" in the Move Tool options window). This doesn't select the layer, it
only moves it. See "Move tool" section of the online manual at [http://docs.gimp.org/](http://docs.gimp.org/)
+
+### How can you wrap text using the Font tool? There are alignment buttons (including justified) but they
have little effect since I can't work out how to make the text wrap.
+
+Text cannot be wrapped automatically. But when you type some text in the text-editing dialog you can just
hit enter for a new line. In that case the alignment buttons would apply.
+
+### Why do I have to make my rectangular selection exactly right the first time? Why can't I move and resize
a rectangular selection using handles?
+
+You can, at least in version 2.3.10 of GIMP. (notice the small arrows at each edge of the rectangular
selection.)
+
+### I recently saw a project that specified files were to be saved in Photoshop "Save for Web → High
(15K to 30K Optimized)" format. Is there an equivalent in GIMP?
+
+Yes, there is a plug-in for GIMP which is called "Save for Web" and created by Aurimas Juška as a Google
Summer of Code SOC project. It allows visual adjustment of various image parameters such as quality, number
of colors, dimensions, etc to reach optimal file size.", see
[http://registry.gimp.org/node/33](http://registry.gimp.org/node/33).
+
+### How do I get GIMP to be by default image tool i.e. I installed another program & it is now associated to
auto-opening them.
+
+It depends on what operating system you are using.
+
+* **Windows**: Right-click on an image in explorer and select "Open with..." in the context menu. Select
GIMP and mark "Use this program as standard for openening this filetype". Now the filetype of that image
should be properly associated with GIMP.
+
+* **GNU/Linux (KDE)**: Right-click on an image in konqueror, select "Open with..." → "Other" in the
context menu, select GIMP and check the box "Associate filetype with this program".
+
+* For all other operating systems check the manual of the os.
+
+## Common Feature Requests
+
+### When can we see layer groups?
+
+GIMP 2.8 will have layer groups.
+
+### When can we see 16-bit per channel support (or better)?
+
+For some industries, especially photography, 24-bit colour depths (8 bits per channel) are a real barrier to
entry. Once again, it's GEGL to the rescue. Work on integrating GEGL into GIMP began after 2.4 was released,
and will span across several stable releases. This work will be completed in GIMP 3.0, which will have full
support for high bit depths. If you need such support now and can't wait,
[cinepaint](http://www.cinepaint.org/) and [Krita](http://www.krita.org/) support 16 bits per channel now.
+
+The current development branch, GIMP 2.9.x, supports higher bit depths than the 2.8 and older
8-Bit-per-component...
+
+### When can we see native CMYK support?
+
+It is clear from the [product vision](http://gui.gimp.org/index.php/GIMP_UI_Redesign#product_vision) that
GIMP eventually needs to support CMYK, but it is impossible to say when someone finds the free time and
motivation to add it. In the meantime it is possible to work with CMYK to some extent using plug-ins, such as
the [Separate+](http://cue.yellowmagic.info/softwares/separate-plus/index.html) plug-in.
+
+### When will an MDI/nested windows be implemented?
+
+GIMP will not get an MDI, but GIMP 2.8 will feature a single-window mode.
+
+### How should I make feature requests?
+
+The first thing to do is see if your request has already been made. It probably has; we get a lot of feature
requests. Check the [user](https://lists.xcf.berkeley.edu/lists/gimp-user/) and
[developer](https://lists.xcf.berkeley.edu/lists/gimp-developer/) mailing-list archives and search
[bugzilla](https://bugzilla.gnome.org/query.cgi). If you find a discussion that seems relevant, feel free to
add your two penneth.
+
+If you are making a new feature request, please make it to the gimp-user or -developer mailing list first
and _not_ bugzilla. Think about what it is you are trying to achieve with your request and not about what the
underlying procedure is. We get a lot of requests from Photoshop users who simply ask for their favourite
Photoshop tool without saying what it does and why it is useful to them. Once we understand what the tool is
for, we may find that we can do it better, or that the way it works in Photoshop isn't suitable for GIMP's
interface, or that GIMP already supports the feature, but in a different way.
+
+Once the feature has been discussed on the mailing list, a bug report should be opened so that record can be
kept on its progress.
+
+Sven Neumann has this to say on the matter of a "polygon select" feature requests:
+
+* No tool should be written without doing a full specification beforehand and discussing this spec on the
mailing-list(s). Bugzilla is the wrong place for such a discussion. If you want to do something to help,
please make a list of usage scenarios that involve creating polygonal selections. Then analyze how these
scenarios can be performed using the existing tools and identify problems.
+
+ With the list of scenarios and problems, you are then able to analyze and to compare different possible
solutions. These solutions might involve changing existing tools or adding new one(s). As soon as we have
identified the best solution, it can be fully specified. Only then can someone can start to implement it.
+
+## Plug-Ins
+
+### What are plug-ins?
+
+Plug-ins are external modules that actually do the nifty graphics transformations. There is a plug-in
registry at [http://registry.gimp.org/](http://registry.gimp.org/) with the latest plug-ins, maintained by
Ingo Lütkebohle. [Special thanks to Adam Moss for the original registry!]
+
+### How do I add new plug-ins?
+
+First, copy the plug-in[s] to your plug-in directory (typically /usr/local/lib/gimp/$VERSION/plug-ins/).
+
+After copying the plug-in to its proper directory, just run GIMP. It should automatically find new plug-ins.
+
+### How do I build new plug-ins?
+
+You'll need a copy of the source directories. Build GIMP. Place the new plug-in in the plug-ins directory.
The docs with the new plug-in hopefully identify any special libraries it needs. Look for a plug-in with
similar libraries (if all else fails, look at xpm and whirlpinch).
+
+With newer versions, if the plug-in is contained in a single source file, you should just have to run
gimptool in the plug-in's directory :
+
+* gimptool --build plugin.c
+
+For older versions, there are several methods. The first two walk you through a number of steps manually;
these are the most thorough, but also require more work on your part. The last ones are scripts of one sort
or another, and are easier on your part -- if they work with your system. Go ahead and try - you can always
fall back on the first methods.
+
+* The best way to procede is to edit the Makefile. Pick a similar plug-in (such as whirlpinch). For the
SRC and OBJ lines, just add entries similar to the others, but with the new plug-in's name. Now, find all the
groups of lines with the other plug-in's name in them, duplicate them, and change the old name to the new
name. The one exception is the huge set of lines that have a lot of paths that end in .h - do not bother with
these. Now, just type
+
+ * make
+
+ * and it should build. Install it wherever your other plug-ins are installed.
+
+* A second choice for those who don't want to mess with the main Makefile is to build a file to create
just the new plug-in. Start the same way - pick a similar plug-in. Now remove the binary and object files for
the one you just picked. For instance, if you selected the whirlpinch plug-in, you will see the following
files:
+
+ * whirlpinch whirlpinch.c whirlpinch.o
+
+ * In this case, you would remove the first and last files, leaving the whirlpinch.c file. Now type
+
+ make
+
+ * to rebuild the old plug-in.
+
+ Copy the output (cut and paste it!) into a file. Edit the file and change all occurances of
"whirlpinch" (or whatever) to the name of the new plug-in. Execute the file you just edited. For instance, if
the file is make_plug-in, just type
+
+ make_plugin
+
+ * and it should work. The copy the plug-in to wherever the others are installed on your system.
+
+* A Makefile
+
+ * First, load Makefile-pi provided by Ciccio C. Simon . Change all occurances of the word sharpen in
Makefile-pi to the name of the new plug-in. Then type
+
+ * make -f Makefile-pi
+
+ * and watch it (hopefully) work.
+
+ If it doesn't work, try the next method.
+
+* A compile script
+
+ * First, load the compile-pi script provided by Jeremy Dinsel . Change the permissions on compile-pi
as follows:
+
+ * chmod ugo+rx compile-pi
+
+ * and type
+
+ compile-pi help
+
+ * for instructions. Follow those instructionms. If this one also fails, go back to the earlier,
manual methods; you have too picky a configuration for the simple methods to work.
+
+If you need more help, ask your system administrator or a handy programmer, or get a good book on make (such
as O'Reilly's). You may want to join the GIMP developer's list as well (see the Developer FAQ).
+
+### Is there a plug-in for ... ?
+
+The plug-in registry referenced above is the place to check.
+
+### Why did some plug-ins disappear for 0.99.19?
+
+Some of the plug-ins have proven unstable. These have been moved into a separate download, which should be
available wherever you got the GIMP, in the file gimp-plugins-unstable-VERSION.tar.gz or
gimp-plugins-unstable-VERSION.tar.bz2 .
+
+Since this list may change frequently, the unstable plug-ins are no longer listed here. Script-Fu
+
+### What is Script-Fu?
+
+In the words of S&P:
+
+* Script-Fu is the first GIMP scripting extension. Extensions are separate processes that communicate with
the GIMP in the same way that plug-ins do. The distinction is that extensions don't require an active image
to operate on, instead extending GIMP's functionality. GIMP internals for version 1.0 have been completely
overhauled from version 0.54\. In particular, the plug-in API has been made far more general with the advent
of the procedural database (PDB). The PDB allows GIMP and its plug-ins to register procedures which can then
be called from anywhere: internally, from extensions, and from plug-ins. There are already over 200 internal
GIMP procedures, and more being created all the time. Because all of these procedures can be easily invoked
from extensions, the logical next step was to create a scripting facility; thus, Script-Fu was born.
+
+### Where can I learn about Script-Fu?
+
+As with plug-ins, web pages, COBOL, or anything else, one of the best things you can do is look at other
peoples' code, and play with it. But it helps a lot if you know Scheme.
+
+* = S&P's Script-Fu pages at
[http://www.xcf.berkeley.edu/~gimp/script-fu/script-fu.html](http://www.xcf.berkeley.edu/~gimp/script-fu/script-fu.html)
= Mike Terry's Black Belt School of Script-Fu at
[http://manual.gimp.org/manual/GUM/write_scriptfu3.html](http://manual.gimp.org/manual/GUM/write_scriptfu3.html)
+
+### How do I call one script-fu script from another?
+
+The trick to calling script-fu-scripts from another script is to just reference the main define for the
script and not to try to use the pdb call. All the scripts in script-fu share a common name space; you call
other scripts just like a regular function / define / whatever you call those those things in_scheme.
+
+Ie, to call script-fu-predator in a script, just use
+
+* (script-fu-predator img drawable 2 TRUE 3 TRUE TRUE)
+
+For examples, see
+
+* [http://adrian.gimp.org/scripts/test.scm](http://adrian.gimp.org/scripts/test.scm) .
+
+### How do I call a plug-in from script-fu?
+
+The following examples assume the plug-in name is "plug_in_randomize_hurl", and the plug-in has four
parameters specific to it, the first two of which are floats, and the next two ints.
+
+From the script-fu console, call a plug-in like this:
+
+ (plug-in-name 1 0 0 100.0 1.0 10 0)
+
+The first parameter should always be a "1". The next two are the image number and drawable. Anything
following these numbers will be plug-in parameters, which depend on the plug-in.
+
+Inside an actual script, call a plug-in like this:
+
+ (define (script-fu-fred img drawable)
+
+ (plug-in-randomize-hurl 1 img drawable 100.0 1.0 10 0)
+ (gimp-displays-flush)
+
+ )
+
+ (script-fu-register "script-fu-fred" "<Image>/Script-Fu/fred"
+ "Randomize test" "Miles O'Neal <meo rru com>" "Miles O'Neal"
+ "1998/May/1" "RGB*, GRAY*, INDEXED*" SF-IMAGE "Image" 0 SF-DRAWABLE
+ "Drawable" 0)
+
+### How do I execute script-fu from batch mode?
+
+Invoke the script as non-interactive and add a pair of escaped quotes around each string just like you do in
(script-fu-register). You DO NOT need to replace '-' with '\_' in any names or registrations.
+
+Example script:
+
+ (define (script-fu-famhist-link text filename) ;; code ommitted
+ for brevity (file-gif-save 1 img 0 filename "" FALSE FALSE 0 0))
+
+ (script-fu-register "script-fu-famhist-link"
+ "<Toolbox>/Xtns/Script-Fu/Family Historian/Link" "Family Historian
+ Link" "John Johnson" "John Johnson" "1998" "" SF-VALUE "Text String"
+ "\"Family Historian\"" SF-VALUE "Base filename" "\"foo\"")
+
+ Example Invocation:
+
+ ;; note the '1' as the first argument tell it to run non-interactivly ;;
+ note the \" \" pairs around the strings
+
+ gimp -n -b '(script-fu-famhist-link 1 "\"Introduction\"" \
+ "\"intro.gif\"")' '(gimp-quit 0)'
+
+For a detailed, step by step explanation, check out Adrian's GIMP Batch Mode how-to at
[http://adrian.gimp.org/batch/](http://adrian.gimp.org/batch/) .
+
+### What does "procedural-database-error" in script-fu mean?
+
+Normally it means that the script is trying to use a particular font that isn't available on your system -
it's either not installed or not in your X server's FONTPATH. The base script-fu package makes extensive use
of the freefont package, and at least one font (AlfredDrake) from the sharefont package.
+
+### What is Net-Fu? Where is it?
+
+Net-fu is a web-based interface to a script-fu server. The work is done at a remote site. To see Net-fu,
point your web browser at [http://download.gimp.org/](//download.gimp.org/) or one of the mirror sites, and
then go to "pub/gimp/net-fu/". Any web browser can read net-fu pages; the browser must be Java-enabled to
actually run Script-fu. Fonts
+
+### Where can I get the fonts I'm missing?
+
+The freefonts and sharefonts packages are both available from
[ftp://ftp.funet.fi/pub/Linux/mirrors/metalab/X11/fonts/](ftp://ftp.funet.fi/pub/Linux/mirrors/metalab/X11/fonts/)
or other metalab mirrors. If you get the sharefonts package, be sure and read the various licensing
agreements, and abide by them.
+
+### How can I change the GIMP font?
+
+You need to copy the gtkrc file that comes with the GIMP source (in the top level directory) into
$HOME/.gimp/gtkrc . As of 0.99.10, this should be recognized. You then go in and edit the default font style,
the one that looks like this:
+
+ style "default" { font =
+ "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" }
+
+I'm sure ther's a lot of clever stuff that can be done here, and I'll try to track it down soon, but in the
meantime, just change that "100" to something larger, like "120" or "140". (The number is points= 10, so 100
is a 10 point font).
+
+Obviously, you could stick in any font you have available.
+
+### Why don't the Far Eastern fonts work?
+
+These are 16 bit fonts, with thouousands and thouousands of characters. And the characters are more complex,
which means (usually) more bits per character, which means more memory and more processing time.
+
+This includes fonts such as kana, kanji, song ti, mincho and gothic. (If you look carefully at the fully
qualified font name for gothic via xfontsel, you'll see clues. It's a daewoo font. The gothic name is
misleading to western minds, but no doubt means something to its author[s].)
+
+Check one of these out in a program that shows a font as pages (such as xfd).. You can keep hitting next
page to see a new page of characters, almost forever.
+
+### What about TrueType fonts?
+
+If neither your X server nor your X font server supports you can try one of the TruType font servers: xfstt
([http://sunsite.unc.edu/pub/Linux/X11/fonts/](http://sunsite.unc.edu/pub/Linux/X11/fonts/)) or xfsft
([http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/](http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/) .
+
+xfstt supposedly has limitations on the font size. File Formats
+
+### What is GIMP's native graphics file format?
+
+XCF is GIMP's "native" format. This will preserve all information about an image, including the layers.
+
+### What other graphics file types are supported?
+
+All the common formats, and many more as well, including GIF, TIFF, JPEG, XBM, XPM, PostScript, and BMP.
Plug-ins are used to load and save files so adding new file types is very simple, compared to other graphics
programs.
+
+As of July 1, 1998, the list of supported types included BMP, CEL, FITS, FLI, GBR, Gicon, GIF, GIcon, HRZ,
JPEG, PAT, PCX, PIX, PNG, PNM, PostScript, SGI, Sun Raster, TGA, TIFF, XPM, XWD and XCF. Bzipped, Gzipped and
Xdelta'd files are understood, and URL support is provided.
+
+Of course, plug-ins for other types may be available at the plug-in registry .
+
+* Why can't I save my image as a GIF (or whatever)?
+
+The two most likely problems are related to image type and layers. For instance, your image type must be
"Indexed" for GIF, but "RGB" for TIFF. Try a different image type (look under the "Image" menu). If you have
more than 1 layer in your image, you probably need to merge the visible layers, and/or "flatten" the image.
Both operations are available under the "Layers" menu or from the "Layers" dialog. Flattening will destroy
any background transparency.
+
+### Is there any way to keep the layers when I save?
+
+Yes; GIMP has a file format just for this - the XCF format.
+
+### Why can't I open or export JPEG / JPG files?
+ Why can't I open or export GIF files?
+ Why can't I open or export PNG files?
+ Why can't I open or export XPM files?
+ Why can't I open or export TIFF / TIF files?
+ Why can't I open or export PSD files?
+ Why can't I open or export SOME_FORMAT files?
+
+There are several possibilities.
+
+1. GIMP comes with full support for a few types built in. If the type you want doesn't appear in file type
format of the Open and Export dialogs, you need to check the Plug-in registry to see whether you need to
download an optional plug-in.
+2. Some of the file types, such as JPEG and TIFF, require extra libraries (described elsewhere). Make sure
you have the correct versions of these on your system.
+
+## Troubleshooting Unix Platforms
+
+### Why can't I get JPEG to work on my Digital Alpha/UNIX (4.0d) box?
+
+Even the jpeg libraries at the GIMP web site may not work for all versions. If their jpeg-shared-6.a.tar.gz
package doesn't work for you, try:
+
+* [ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz](ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz)
+
+### Why won't GIMP compile on 64-bit or IRIX (SGI) machines?
+
+If you are using a 64-bit OS, you need to add the `-o32` option for the compiler, or use gcc.
+
+With the SGI compiler, you may also need to play with optimization.
+Some modules may have exhibit problems unless compiled with `-O1` or even `-O0`.
+
+### Script-Fu won't compile on IRIX (SGI)
+
+Script-Fu requires the POSIX-compliant regex functions, which SGI only supports with IRIX 6.2 and later
versions. The GNU version of regex should work just fine, though, and is available at:
+
+*
[http://wuarchive.wustl.edu/systems/gnu/regex-0.12.tar.gz](http://wuarchive.wustl.edu/systems/gnu/regex-0.12.tar.gz)
+
+### Why does GIMP complain about X Input Methods under Solaris?
+
+GIMP is interacting in such a way with your system that it thinks you have XIM extensions when you don't.
Run the configure script again, with the `--disable-xim` option, and recompile.
+
+You can also try compiling with `--disable-shared`.
+
+Or you can install a version of X11R6\. 8^)
+
+### How do I add fonts with Solaris?
+
+If you just want to use freefonts or sharefonts, you can copy these files into the appropriate directory
(such as /usr/openwin/lib/fonts/freefonts/ or /usr/openwin/lib/fonts/sharefonts/), or merge them with the
appropriate fonts.dir and fonts.scale files if you mixed in freefonts and sharefonts with existing fonts:
+
+* freefonts fonts.dir
+
+* freefonts fonts.scale
+
+* sharefonts fonts.dir
+
+* sharefonts fonts.scale
+
+Or just try using fontadmin instead of mkfontdir .
+
+I've never run into a Solaris system missing this, but according to Neil Corlett:
+
+* The 'fontadmin' tool is a openwin demo program and sometimes does not exist. To properly add fonts the
finagled directory requires fonts.dir, fonts.scale files to exist. mkfontdir does the first of these OK. For
the second I built groff and downloaded type1inst-0.6.1 from an X contrib archive. type1inst (which needs
groff) will build the fonts.scale file from the pfb files automatically.
+
+Solaris 2.6 is supposed to include better font editor and admin tools.
+
+### How do I add fonts with SunOS?
+
+SunOS ships with an X11R4 server, which does not handle either scaleable fonts or communications with the X
font server. If you want to use the freefonts (or any scalable fonts) on SunOS, you need to install your own,
newer X server, preferably X11R6.4 (which will be much faster than the server shipped with SunOS).
+
+If you do this, you will no longer have PostScript capability directly in your X server; you will need to
use ghostscript. You may well want to keep both servers around, and use each when you need its features.
+
+Of course, you could always try to find a PS version of the font you need and make a bitmap for the size you
need and add that to the X11R4 server's font path, but if you need more than one or two font/size
combinations over all the time you use GIMP, this is an obnoxious solution.
+
+### What is the gimp.wmconfig file?
+
+* It's a Red Hat RPM-related file, related to their desktop and window manager.
+
+#### Why does my RedHat system get <span class="u">register_? errors when I run GIMP? ####
+This is due to incompaitble RPMS. If (for example) gtk was compiled with egcs, GIMP must be compiled with
egcs. There is no easy way to tell what is compiled with what, so getting both GIMP and gtk off a GIMP mirror
would be a good idea.</span>
+
+Another possibility is for this error (far less common) is that there is an old library compiled with the
other hanging around somewhere on the system. Remove old copies of libgimp.
+
+### Why don't GIF and JPEG work on Slackware Linux?
+
+* You need to manually get libgif and libjpeg and compile and install them on your system. They will
install by default in /usr/local/lib, so once they're installed, you have to make sure that
LD_LIBRARY_PATH=/usr/local/lib or put /usr/local/lib in your ld.so configuration file. In addition, you also
have to remove libgif.* and libjpeg.* from your /usr/lib directory, as these will be found first (and even if
you finagle ld.so to find the other libs first, they're still broken so remove them anyway).
+
+### I get make errors on {Solaris, HP/UX, whatever}.
+
+You are probably not using the GNU make. Most, if not all, non-GNU makes will fail on the GIMP makefiles.
Get the GNU make package.
+
+### Why do I see weird things when I use GIMP with AcceleratedX?
+
+It's a bug in AcceleratedX with shared memory. Turn off shared memory when you start GIMP (--no-xshm) or
pick up the patch to AcceleratedX's X server from
[ftp://ftp.xinside.com/pub/update/](ftp://ftp.xinside.com/pub/update/) .
+
+At least one person has found this bug (or another one with the same symptoms) to still be present in 4.1 .
+
+### What's this beavis.jpg image used in several scripts?
+
+(/usr/local/share/gimp/scripts/beavis.jpg is the B/W image in question.)
+
+The image (of a kitten playing with Gumby) is used as "sorta random, sorta not" data to generate (for
example) the crystal bands, or other texture maps. There are other ways to produce this data as well, but the
author stuck with this one, found in a tutorial somewhere.
+
+#### What lucky human does this adorable cat own?
+
+One of the original GIMP authors, Spencer Kimball or Peter Mattis, we forgot which.
+
+## Footnotes
+
+Portions of this FAQ have been taken from
[http://www.rru.com/~meo/gimp/faq-user.html](http://www.rru.com/~meo/gimp/faq-user.html)
diff --git a/content/docs/userfaq.md b/content/docs/userfaq.md
index 3d57989..9c5c73d 100644
--- a/content/docs/userfaq.md
+++ b/content/docs/userfaq.md
@@ -1,236 +1,236 @@
-Title: Frequency Asked Questions
-Date: 2015-08-14T15:07:00-05:00
-Author: Alexandre Prokoudine
-
-[TOC]
-
-## General questions
-
-### Can I use GIMP commercially?
-
-Yes, you can. GIMP is free software, it doesn't put restrictions on the kind
-of work you produce with it.
-
-### What's the GIMP's license, and how do I comply with it?
-
-GIMP is distributed under terms of General Public License v3 and later. In a
-nutshell, this means:
-
-* You are free to use GIMP, for any purpose
-* You are free to distribute GIMP
-* You can study how GIMP works and change it
-* You can distribute changed versions of GIMP
-
-Note that once you distribute modified version of GIMP, you also must publish
-your changes to the source code under GPLv3+ as well.
-
-### Someone sold or tried to sell me GIMP on a 3rd party website. Is this legal?
-
-Yes, under terms of the General Public License this is perfectly legal,
-provided that the seller also gave you the source code of GIMP and any
-modifications he/she introduced.
-
-### Are you trying to develop a Photoshop killer app?
-
-No. Most generic image editors look like Photoshop simply because Adobe's
-application was among the first image editors as we know them now, so
-developers tend to stick to what people know — in general terms.
-
-What we aim to do is to create a high-end image manipulation application that
-is free to use and modify by everyone, ever.
-
-Feature-wise, the proposed "high-end" status does automatically put GIMP into
-direct comparison against Photoshop, but we don't think about competition
-much. We have too many ideas of our own to implement, and too many things to
-improve before the notion of competition begins to make the slightest sense.
-
-We do, however, acknowledge the fact that people will treat GIMP as Photoshop
-replacement no matter what we tell them, and that's all right with us. You
-own this software, it's up to you to decide how you make use of it.
-
-### Why can't you just copy Adobe Photoshop to make GIMP usable?
-
-In the past, the development in the project was somewhat erratic with regards
-to taking usability into consideration, which is rather typical for free
-software projects, but inexcusable for a high-end image editor that GIMP aims to
-become.
-
-Between 2006 and 2013, we worked with Peter Sikking of Man+Machine Works, a
-professional usability architect, who helped us shape the project vision for
-GIMP, interviews professional users to better understand their workflows and
-demands, and wrote functional specifications for various GIMP features.
-
-[This collaboration](http://gui.gimp.org) resulted in major improvements of
-GIMP's usability, in particular: the rectangular-based selection/cropping
-tools, the unified free/polyline selection tool, the single-window mode, the
-upcoming unified transformation tool etc.
-
-While working on functional specifications, Peter researched how various
-features are implemented in applications with a partially matching feature set
-(such as Adobe Photoshop), but the final design was made to help actual users
-complete their tasks as fast as possible. This is exactly the kind of approach
-to designing interfaces that we consider to be superior to merely copying user
-interaction decisions.
-
-### I don't like the name GIMP. Will you change it?
-
-No. We've discussed this numerous times, and we don't think this is really all
-that necessary. We understand that some people feel offended by the colloquial
-meaning of the name GIMP, but we cannot please everybody and should not
-attempt to do so.
-
-## Releases
-
-### When do you release the next version if GIMP?
-
-We release both updates to the current stable version and development versions.
-
-We cut new updates of the stable version in two cases: 1) some newly introduced
-bug is knowingly affecting a lot of users; 2) the amount of improvements and
-bug fixes is large enough to justify an update — typically, a few
-dozens of each, but there is no rule.
-
-Currently we have no released unstable/development versions. We'd like to
-release GIMP 2.9.0 as the first step towards GIMP 2.10 sometime in 2015, but
-quite a few changes have to be made first.
-
-### Why can't you announce dates of future releases?
-
-We are a team of volunteers with day jobs, families, and personal interests
-beyond development of software. Given that, we try to avoid the situation when
-we cannot deliver a release, because something else at work/in family came up.
-
-Instead we provide a [feature-based roadmap](http://wiki.gimp.org/wiki/Roadmap)
-that roughly outlines, in what order we will be implementing various popular
-requests made by users.
-
-### Aren't you interested in doing paid development of GIMP via crowdfunding?
-
-We already have jobs we love. However we actively encourage personal
-fundraisers by trusted contributors. If you are willing to launch a campaign
-and develop some features for GIMP, talk to us about changes you are about to
-propose. We'll help you to flesh out your idea and promote it to a larger
-community.
-
-## Features
-
-### When will GIMP support HDR imaging and processing in the 16bit per color channel mode?
-
-GIMP 2.10 will be the first version to feature processing with precision of
-16, 32, and 64bit per color channel. This version is currently in the works,
-and this particular feature has already been implemented.
-
-### When will GIMP support any kind of non-destructive editing like adjustment layers, layer filters, and/or
full-blown node-based editing?
-
-Currently the plan is to introduce non-destructive editing in GIMP 3.2. This
-is a huge change that will require rethinking the workflow, designing a new
-file format for GIMP projects etc.
-
-### Will GIMP open raw (.NEF, .CR2 etc.) files from my camera?
-
-Currently you need to install [UFRaw](http://ufraw.sourceforge.net/) to open
-raw files. It's both a standalone application and a GIMP plugin for opening
-and processing raw images.
-
-### I do a lot of desktop publishing related work. Will you ever support CMYK?
-
-Better support for CMYK has been on our roadmap for a long time. However
-this project has certain prerequisites such as the complete port of GIMP to
-GEGL.
-
-The idea, how we want to make this work, was introduced by user interaction
-architect Peter Sikking at Libre Graphics Meeting 2009 and later —
-in his two-part article in his company's blog:
-[1](http://blog.mmiworks.net/2009/05/gimp-enter.html),
-[2](http://blog.mmiworks.net/2009/06/gimp-squaring-cmyk-circle.html). Please
-take some time to read up on that.
-
-It's worth mentioning that currently CMYK is considered by us a low-priority
-project. Here's why.
-
-Things like non-destructive editing are required by pretty much all
-users — photographers, designers, desktop publishing engineers,
-and even scientists. At the same time, CMYK is required only by a small subset
-of our user base. We prioritize our work accordingly.
-
-Note that should a new developer join the team to specifically work on
-CMYK-related features, we will do our best to help him/her to complete this
-project and get it to our users as soon as possible.
-
-### I don't like some changes you introduced in recent GIMP versions. Why can't you add a checkbox to
disable them?
-
-We realize that some changes are disruptive to some groups of users,
-especially those who got used to GIMP as an image editor for doing quick fixes
-to lossy files such as JPEG, PNG etc. (i.e. files that cannot store layers,
-masks, custom channels, paths).
-
-However, adding a switch for every change we make adds numerous levels of
-complexity that we'd rather avoid. Additionally, it would lead to dramatically
-changing the way we mean GIMP to work. Hence we respectfully disagree to make
-extra behaviour switches.
-
-At the same time, if you don't wish to abandon GIMP completely, we recommend
-having a look at the
-[Saver and Save/export clean plug-ins](http://www.shallowsky.com/software/gimp-save/)
-by Akkana Peck, as well as at various GIMP forks on GitHub, although typically
-they aren't maintained up to date with regards to bugfixes.
-
-## Tips
-
-### How do I draw a straight line?
-
-In any of the drawing tools (Pen, Pencil, etc.), click on one endpoint of the
-line. Then hold the shift key and click on the other endpoint.
-
-### How do I draw a circle or square?
-
-In the Rectangular or Elliptical selection tool, click in one corner of your
-square or circle, then press Shift while dragging toward the other corner. Or
-enable the checkbox for Fixed: Aspect Ratio in tool options and make sure the
-aspect ratio is set to 1:1 before starting your square or circular selection.
-
-Once you have a selection, Edit->Stroke Selection... will draw a line the
-shape of the selection you just made.
-
-For curved selections, like circles, stroking with the Paintbrush paint tool
-will usually give a smoother looking line. You can get an even smoother line
-by converting the selection to a path (Select->To Path), then using
-Edit->Stroke Path... instead of Stroke Selection...
-
-## Troubleshooting
-
-### My graphic tablet doesn't work on Windows/Mac. Does GIMP support advanced input devices such as Wacom?
-
-Yes, GIMP does support graphic tablets and maps pressure, stroke speed and
-other events to its advanced brush engine properties. However, the version of
-the user interface toolkit that GIMP currently relies on (GTK+ 2.x) is broken
-beyond repair on Windows and Mac with regards to supporting advanced input
-devices such as Wacom's.
-
-To fix this, we need to port GIMP to GTK+3 where everything works as expected.
-Some work on that has already been done in the
-[gtk3-port](https://git.gnome.org/browse/gimp/log/?h=gtk3-port) Git branch.
-However we won't have time to give this our full attention until GIMP 2.10 is
-out. We encourage interested developers to either work on the GTK+3 port or,
-better yet, help us finish GIMP 2.10.
-
-## Contributing
-
-### I'm a developer. How do I help you?
-
-Great! Please check the [wiki](http://wiki.gimp.org/wiki/Hacking:Developer_FAQ)
-for introduction on GIMP development and talk to us on
-[IRC](//www.gimp.org/irc.html).
-
-### I'm not a developer. Can I still help you somehow?
-
-Absolutely! Here are some of the ways you can help us:
-
-* Post awesome art online and tell people you made it with GIMP.
-* Help new GIMP users in an online forum you visit.
-* Write a great tutorial on getting something done with GIMP and post it
-online or submit to [GIMP Magazine](http://gimpmagazine.org/).
-* Do a GIMP workshop in your local community.
-* Improve translation of [GIMP](https://l10n.gnome.org/module/gimp/) and/or its
-[user manual](http://docs.gimp.org/) into your native language (read
-[this page](https://wiki.gnome.org/TranslationProject) to find out, how).
+Title: Frequency Asked Questions
+Date: 2015-08-14T15:07:00-05:00
+Author: Alexandre Prokoudine
+
+[TOC]
+
+## General questions
+
+### Can I use GIMP commercially?
+
+Yes, you can. GIMP is free software, it doesn't put restrictions on the kind
+of work you produce with it.
+
+### What's the GIMP's license, and how do I comply with it?
+
+GIMP is distributed under terms of General Public License v3 and later. In a
+nutshell, this means:
+
+* You are free to use GIMP, for any purpose
+* You are free to distribute GIMP
+* You can study how GIMP works and change it
+* You can distribute changed versions of GIMP
+
+Note that once you distribute modified version of GIMP, you also must publish
+your changes to the source code under GPLv3+ as well.
+
+### Someone sold or tried to sell me GIMP on a 3rd party website. Is this legal?
+
+Yes, under terms of the General Public License this is perfectly legal,
+provided that the seller also gave you the source code of GIMP and any
+modifications he/she introduced.
+
+### Are you trying to develop a Photoshop killer app?
+
+No. Most generic image editors look like Photoshop simply because Adobe's
+application was among the first image editors as we know them now, so
+developers tend to stick to what people know — in general terms.
+
+What we aim to do is to create a high-end image manipulation application that
+is free to use and modify by everyone, ever.
+
+Feature-wise, the proposed "high-end" status does automatically put GIMP into
+direct comparison against Photoshop, but we don't think about competition
+much. We have too many ideas of our own to implement, and too many things to
+improve before the notion of competition begins to make the slightest sense.
+
+We do, however, acknowledge the fact that people will treat GIMP as Photoshop
+replacement no matter what we tell them, and that's all right with us. You
+own this software, it's up to you to decide how you make use of it.
+
+### Why can't you just copy Adobe Photoshop to make GIMP usable?
+
+In the past, the development in the project was somewhat erratic with regards
+to taking usability into consideration, which is rather typical for free
+software projects, but inexcusable for a high-end image editor that GIMP aims to
+become.
+
+Between 2006 and 2013, we worked with Peter Sikking of Man+Machine Works, a
+professional usability architect, who helped us shape the project vision for
+GIMP, interviews professional users to better understand their workflows and
+demands, and wrote functional specifications for various GIMP features.
+
+[This collaboration](http://gui.gimp.org) resulted in major improvements of
+GIMP's usability, in particular: the rectangular-based selection/cropping
+tools, the unified free/polyline selection tool, the single-window mode, the
+upcoming unified transformation tool etc.
+
+While working on functional specifications, Peter researched how various
+features are implemented in applications with a partially matching feature set
+(such as Adobe Photoshop), but the final design was made to help actual users
+complete their tasks as fast as possible. This is exactly the kind of approach
+to designing interfaces that we consider to be superior to merely copying user
+interaction decisions.
+
+### I don't like the name GIMP. Will you change it?
+
+No. We've discussed this numerous times, and we don't think this is really all
+that necessary. We understand that some people feel offended by the colloquial
+meaning of the name GIMP, but we cannot please everybody and should not
+attempt to do so.
+
+## Releases
+
+### When do you release the next version if GIMP?
+
+We release both updates to the current stable version and development versions.
+
+We cut new updates of the stable version in two cases: 1) some newly introduced
+bug is knowingly affecting a lot of users; 2) the amount of improvements and
+bug fixes is large enough to justify an update — typically, a few
+dozens of each, but there is no rule.
+
+Currently we have no released unstable/development versions. We'd like to
+release GIMP 2.9.0 as the first step towards GIMP 2.10 sometime in 2015, but
+quite a few changes have to be made first.
+
+### Why can't you announce dates of future releases?
+
+We are a team of volunteers with day jobs, families, and personal interests
+beyond development of software. Given that, we try to avoid the situation when
+we cannot deliver a release, because something else at work/in family came up.
+
+Instead we provide a [feature-based roadmap](http://wiki.gimp.org/wiki/Roadmap)
+that roughly outlines, in what order we will be implementing various popular
+requests made by users.
+
+### Aren't you interested in doing paid development of GIMP via crowdfunding?
+
+We already have jobs we love. However we actively encourage personal
+fundraisers by trusted contributors. If you are willing to launch a campaign
+and develop some features for GIMP, talk to us about changes you are about to
+propose. We'll help you to flesh out your idea and promote it to a larger
+community.
+
+## Features
+
+### When will GIMP support HDR imaging and processing in the 16bit per color channel mode?
+
+GIMP 2.10 will be the first version to feature processing with precision of
+16, 32, and 64bit per color channel. This version is currently in the works,
+and this particular feature has already been implemented.
+
+### When will GIMP support any kind of non-destructive editing like adjustment layers, layer filters, and/or
full-blown node-based editing?
+
+Currently the plan is to introduce non-destructive editing in GIMP 3.2. This
+is a huge change that will require rethinking the workflow, designing a new
+file format for GIMP projects etc.
+
+### Will GIMP open raw (.NEF, .CR2 etc.) files from my camera?
+
+Currently you need to install [UFRaw](http://ufraw.sourceforge.net/) to open
+raw files. It's both a standalone application and a GIMP plugin for opening
+and processing raw images.
+
+### I do a lot of desktop publishing related work. Will you ever support CMYK?
+
+Better support for CMYK has been on our roadmap for a long time. However
+this project has certain prerequisites such as the complete port of GIMP to
+GEGL.
+
+The idea, how we want to make this work, was introduced by user interaction
+architect Peter Sikking at Libre Graphics Meeting 2009 and later —
+in his two-part article in his company's blog:
+[1](http://blog.mmiworks.net/2009/05/gimp-enter.html),
+[2](http://blog.mmiworks.net/2009/06/gimp-squaring-cmyk-circle.html). Please
+take some time to read up on that.
+
+It's worth mentioning that currently CMYK is considered by us a low-priority
+project. Here's why.
+
+Things like non-destructive editing are required by pretty much all
+users — photographers, designers, desktop publishing engineers,
+and even scientists. At the same time, CMYK is required only by a small subset
+of our user base. We prioritize our work accordingly.
+
+Note that should a new developer join the team to specifically work on
+CMYK-related features, we will do our best to help him/her to complete this
+project and get it to our users as soon as possible.
+
+### I don't like some changes you introduced in recent GIMP versions. Why can't you add a checkbox to
disable them?
+
+We realize that some changes are disruptive to some groups of users,
+especially those who got used to GIMP as an image editor for doing quick fixes
+to lossy files such as JPEG, PNG etc. (i.e. files that cannot store layers,
+masks, custom channels, paths).
+
+However, adding a switch for every change we make adds numerous levels of
+complexity that we'd rather avoid. Additionally, it would lead to dramatically
+changing the way we mean GIMP to work. Hence we respectfully disagree to make
+extra behaviour switches.
+
+At the same time, if you don't wish to abandon GIMP completely, we recommend
+having a look at the
+[Saver and Save/export clean plug-ins](http://www.shallowsky.com/software/gimp-save/)
+by Akkana Peck, as well as at various GIMP forks on GitHub, although typically
+they aren't maintained up to date with regards to bugfixes.
+
+## Tips
+
+### How do I draw a straight line?
+
+In any of the drawing tools (Pen, Pencil, etc.), click on one endpoint of the
+line. Then hold the shift key and click on the other endpoint.
+
+### How do I draw a circle or square?
+
+In the Rectangular or Elliptical selection tool, click in one corner of your
+square or circle, then press Shift while dragging toward the other corner. Or
+enable the checkbox for Fixed: Aspect Ratio in tool options and make sure the
+aspect ratio is set to 1:1 before starting your square or circular selection.
+
+Once you have a selection, Edit->Stroke Selection... will draw a line the
+shape of the selection you just made.
+
+For curved selections, like circles, stroking with the Paintbrush paint tool
+will usually give a smoother looking line. You can get an even smoother line
+by converting the selection to a path (Select->To Path), then using
+Edit->Stroke Path... instead of Stroke Selection...
+
+## Troubleshooting
+
+### My graphic tablet doesn't work on Windows/Mac. Does GIMP support advanced input devices such as Wacom?
+
+Yes, GIMP does support graphic tablets and maps pressure, stroke speed and
+other events to its advanced brush engine properties. However, the version of
+the user interface toolkit that GIMP currently relies on (GTK+ 2.x) is broken
+beyond repair on Windows and Mac with regards to supporting advanced input
+devices such as Wacom's.
+
+To fix this, we need to port GIMP to GTK+3 where everything works as expected.
+Some work on that has already been done in the
+[gtk3-port](https://git.gnome.org/browse/gimp/log/?h=gtk3-port) Git branch.
+However we won't have time to give this our full attention until GIMP 2.10 is
+out. We encourage interested developers to either work on the GTK+3 port or,
+better yet, help us finish GIMP 2.10.
+
+## Contributing
+
+### I'm a developer. How do I help you?
+
+Great! Please check the [wiki](http://wiki.gimp.org/wiki/Hacking:Developer_FAQ)
+for introduction on GIMP development and talk to us on
+[IRC](//www.gimp.org/irc.html).
+
+### I'm not a developer. Can I still help you somehow?
+
+Absolutely! Here are some of the ways you can help us:
+
+* Post awesome art online and tell people you made it with GIMP.
+* Help new GIMP users in an online forum you visit.
+* Write a great tutorial on getting something done with GIMP and post it
+online or submit to [GIMP Magazine](http://gimpmagazine.org/).
+* Do a GIMP workshop in your local community.
+* Improve translation of [GIMP](https://l10n.gnome.org/module/gimp/) and/or its
+[user manual](http://docs.gimp.org/) into your native language (read
+[this page](https://wiki.gnome.org/TranslationProject) to find out, how).
diff --git a/content/donating/sponsors.md b/content/donating/sponsors.md
index a370294..4b5f293 100644
--- a/content/donating/sponsors.md
+++ b/content/donating/sponsors.md
@@ -1,32 +1,32 @@
-Title: Donors
-Date: 2015-08-14T15:54:25-05:00
-Author: Pat David
-
-
-The GIMP team would like to thank all the sponsors for all the help with contributions they have given GIMP.
Thank you!
-
-## Philanthropist
-
-<figure>
-<img src="LarsMathiassen.png" alt="Lars Mathiassen" />
-</figure>
-
-<figure>
-<img src="HiroyukiIkezoe.png" alt="Hiroyuki Ikezoe" />
-</figure>
-
-## Patron
-
-[![Free Software
Foundation](gnu-head-sm.png)](http://www.fsf.org/)[![O'Reilly](oreilly.png)](http://oreilly.com/)[![BackupAssist](ba.png)](http://www.backupassist.com/)![Shawn
Collier](ShawnCollier.png)
-
-## Sponsor
-
-[![EU Edge](euedge.png)](http://euedge.com/)![Adrian
Likins](AdrianLikins.png)[![Distrowatch](dw.png)](http://distrowatch.com/)[![MacGIMP](wilber-macgimp.png)](http://www.macgimp.org/)
-
-## Associate
-
-Gimp-fr.org, Peter Jensen, James Yenne, Roger Mattson, Jonathan Grant, Peter Kupec, Lex Biesenbeek, Soeren
Fanoe, Thomas Zehetner-Schatzl, Eric Pierce, Ken Colette, Cedric Gemy, Jaral Kijkanjanapaiboon, Margaret
Wong, Barton Woolery, Gordon Rios, Nathaniel Friedman, Tord Lindner, Marco Candrian, Mark Slagell, Manuel
Schuhmacher, Jared Stookey, Darren Dale, James Eadon, Yasuhisa Minagawa, Wayne Harris, Jay Patel, Curdegn
Bandli, Reinhard Moser, Adrian Ulrich, Reinhard Lehar, David Kuntz, Cristopher Eisley, John Woltman, Nigel
Ecclesfield.
-
-## Friend
-
-Thanks to people who made small donations - you are numerous!
+Title: Donors
+Date: 2015-08-14T15:54:25-05:00
+Author: Pat David
+
+
+The GIMP team would like to thank all the sponsors for all the help with contributions they have given GIMP.
Thank you!
+
+## Philanthropist
+
+<figure>
+<img src="LarsMathiassen.png" alt="Lars Mathiassen" />
+</figure>
+
+<figure>
+<img src="HiroyukiIkezoe.png" alt="Hiroyuki Ikezoe" />
+</figure>
+
+## Patron
+
+[![Free Software
Foundation](gnu-head-sm.png)](http://www.fsf.org/)[![O'Reilly](oreilly.png)](http://oreilly.com/)[![BackupAssist](ba.png)](http://www.backupassist.com/)![Shawn
Collier](ShawnCollier.png)
+
+## Sponsor
+
+[![EU Edge](euedge.png)](http://euedge.com/)![Adrian
Likins](AdrianLikins.png)[![Distrowatch](dw.png)](http://distrowatch.com/)[![MacGIMP](wilber-macgimp.png)](http://www.macgimp.org/)
+
+## Associate
+
+Gimp-fr.org, Peter Jensen, James Yenne, Roger Mattson, Jonathan Grant, Peter Kupec, Lex Biesenbeek, Soeren
Fanoe, Thomas Zehetner-Schatzl, Eric Pierce, Ken Colette, Cedric Gemy, Jaral Kijkanjanapaiboon, Margaret
Wong, Barton Woolery, Gordon Rios, Nathaniel Friedman, Tord Lindner, Marco Candrian, Mark Slagell, Manuel
Schuhmacher, Jared Stookey, Darren Dale, James Eadon, Yasuhisa Minagawa, Wayne Harris, Jay Patel, Curdegn
Bandli, Reinhard Moser, Adrian Ulrich, Reinhard Lehar, David Kuntz, Cristopher Eisley, John Woltman, Nigel
Ecclesfield.
+
+## Friend
+
+Thanks to people who made small donations - you are numerous!
diff --git a/content/downloads/install_help.md b/content/downloads/install_help.md
index c2171fb..42e6868 100644
--- a/content/downloads/install_help.md
+++ b/content/downloads/install_help.md
@@ -1,96 +1,96 @@
-Title: Install Help
-Date: 2015-08-14T14:18:56-05:00
-Author: Pat David
-Status: hidden
-
-
-
-**Note for Windows Users:** This page is for installation help for the Unix version of GIMP. If you need
help with the installation of Windows GIMP, see the [GIMP for Windows](/windows/) page.
-
-* [Requirements](#requirements)
-* [GIMP Compilation and Installation](#gimp-compilation-and-installation)
-* [Other Packages](#other-packages)
-
-## Requirements
-
-### Main Requirements
-
-Well, it is necessary to have a C compiler and related tools to compile and install the source package. For
the most part, GCC is recommended, but a lot of effort has gone into making GIMP compile with as many
compilers as possible.
-
-A fair amount of disk space is needed too. For a full build with debugging, at least 200 megs free is
recomended. Without debugging and with static libs turned off, GIMP can be compiled in 20-30 megs of space.
This will vary depending on architecture of course. A full GIMP install including all the gimp-data packs can
be 20 megs or more.
-
-A full compile of the stable version takes 1-2 hours on a PPro 200 or K-6 200 with 64 megs of RAM. On a P4
or Athlon with 256 megs of RAM, a build can take 20-30 minutes. In general, expect about 3-4 times as long as
a Linux kernel 2.2 compile (for GNU/Linux systems of course). In other words, its a long compile. That's what
300,000+ lines of code get you.
-
-### Stable version (2.2.x)
-
-* A recent version of **pkg-config** is needed and you can grab them at
[http://www.freedesktop.org/software/pkgconfig/](http://www.freedesktop.org/software/pkgconfig/)
-* **GTK+ 2.4.4** or better (Gimp Toolkit). The GIMP toolkit can be found at
[ftp://ftp.gtk.org/](ftp://ftp.gtk.org/) GTK+ 2.4.4 also needs the following packages. (Either the version
listed or newer)
- * **GLib 2.4.5**
- * **Pango 1.4.0**
- * **ATK**
-* **PangoFT2** a Pango backend that uses **FreeType2** (Make sure you have FreeType2 installed before
installing Pango). Downloads can be found at [http://www.freetype.org/](http://www.freetype.org/)
-* **libart2** Grab the module libart_lgpl out of GNOME CVS or fetch the tarball from
[ftp://ftp.gnome.org/pub/gnome/sources/libart_lgpl/](ftp://ftp.gnome.org/pub/gnome/sources/libart_lgpl/)
-
-
-
-## GIMP Compilation and Installation
-
-
-After grabbing the GIMP distribution, you are ready to compile and install. The main site for the latest
offical GIMP distribution is [http://download.gimp.org/pub/gimp/](//download.gimp.org/pub/gimp/) but you
should consider using one of the mirrors listed on the [download page](./).
-
-GIMP makes use of the Gimp Toolkit (GTK+) and other libraries that must be installed first. Look in
Requirements above to find out more.
-
-Compile as a normal user using: <kbd>./configure && make</kbd> and then as root <kbd>make install</kbd>
-
-If all goes well, a good while later, you will have a brand spanking new GIMP to play with. Unfortunately,
it has been rumored that it isn't always that easy. So, here are a few common problems and some solutions ...
-
-For some more specific info, you may want to read the [INSTALL](INSTALL) file from the main GIMP
distribution.
-
-
-## Other Packages
-
-
-### Print plug-in does not compile
-
-Starting with version 1.2.4, the print plug-in depends on libgimpprint, which is now distributed as a
separate package. The previous versions of GIMP (up to 1.2.3) included all files as part of the GIMP
distribution, but you should now download and install libgimpprint 4.2.6 separately from the Gimp-Print site:
-
-[http://gimp-print.sourceforge.net/](http://gimp-print.sourceforge.net/)
-
-Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the print plug-in should compile.
-
-### JPEG plug-in does not compile
-
-The jpeg plug-in requires the jpeg library. If you don't have it installed or you have a very old version,
then you need to get a recent jpeg library. The places to look are:
-
-[ftp://ftp.uu.net/graphics/jpeg/](ftp://ftp.uu.net/graphics/jpeg/)
-
-Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the jpeg plug-in should compile.
-
-### TIFF plug-in does not compile
-
-The tiff plug-in requires the tiff library. See the jpeg problem mentioned above. Same deal, different lib.
The places to look are at:
-
-[ftp://ftp.sgi.com/graphics/tiff/](ftp://ftp.sgi.com/graphics/tiff/)
-
-Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the tiff plug-in should compile.
-
-### PNG plug-in does not compile
-
-The png plug-in requires libpng and libz (zlib). See the jpeg problem mentioned above. Same deal, different
lib. The places to look are at:
-
-[ftp://ftp.uu.net/graphics/png/src/](ftp://ftp.uu.net/graphics/png/src/)
-
-Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the png plug-in should compile.
-
-### XPM plug-in does not compile
-
-The xpm plug-in requires the xpm library. See the jpeg problem above. Same deal, different lib. The places
to look are at:
-
-[ftp://ftp.x.org/contrib/libraries/](ftp://ftp.x.org/contrib/libraries/)
-
-### I have no SVG support
-
-SVG support requires at least version 2.2 of the rsvg library from gnome.org. This can be found at:
-
-[ftp://ftp.gnome.org/mirror/gnome.org/sources/librsvg/](ftp://ftp.gnome.org/mirror/gnome.org/sources/librsvg/2.6/)
-
+Title: Install Help
+Date: 2015-08-14T14:18:56-05:00
+Author: Pat David
+Status: hidden
+
+
+
+**Note for Windows Users:** This page is for installation help for the Unix version of GIMP. If you need
help with the installation of Windows GIMP, see the [GIMP for Windows](/windows/) page.
+
+* [Requirements](#requirements)
+* [GIMP Compilation and Installation](#gimp-compilation-and-installation)
+* [Other Packages](#other-packages)
+
+## Requirements
+
+### Main Requirements
+
+Well, it is necessary to have a C compiler and related tools to compile and install the source package. For
the most part, GCC is recommended, but a lot of effort has gone into making GIMP compile with as many
compilers as possible.
+
+A fair amount of disk space is needed too. For a full build with debugging, at least 200 megs free is
recomended. Without debugging and with static libs turned off, GIMP can be compiled in 20-30 megs of space.
This will vary depending on architecture of course. A full GIMP install including all the gimp-data packs can
be 20 megs or more.
+
+A full compile of the stable version takes 1-2 hours on a PPro 200 or K-6 200 with 64 megs of RAM. On a P4
or Athlon with 256 megs of RAM, a build can take 20-30 minutes. In general, expect about 3-4 times as long as
a Linux kernel 2.2 compile (for GNU/Linux systems of course). In other words, its a long compile. That's what
300,000+ lines of code get you.
+
+### Stable version (2.2.x)
+
+* A recent version of **pkg-config** is needed and you can grab them at
[http://www.freedesktop.org/software/pkgconfig/](http://www.freedesktop.org/software/pkgconfig/)
+* **GTK+ 2.4.4** or better (Gimp Toolkit). The GIMP toolkit can be found at
[ftp://ftp.gtk.org/](ftp://ftp.gtk.org/) GTK+ 2.4.4 also needs the following packages. (Either the version
listed or newer)
+ * **GLib 2.4.5**
+ * **Pango 1.4.0**
+ * **ATK**
+* **PangoFT2** a Pango backend that uses **FreeType2** (Make sure you have FreeType2 installed before
installing Pango). Downloads can be found at [http://www.freetype.org/](http://www.freetype.org/)
+* **libart2** Grab the module libart_lgpl out of GNOME CVS or fetch the tarball from
[ftp://ftp.gnome.org/pub/gnome/sources/libart_lgpl/](ftp://ftp.gnome.org/pub/gnome/sources/libart_lgpl/)
+
+
+
+## GIMP Compilation and Installation
+
+
+After grabbing the GIMP distribution, you are ready to compile and install. The main site for the latest
offical GIMP distribution is [http://download.gimp.org/pub/gimp/](//download.gimp.org/pub/gimp/) but you
should consider using one of the mirrors listed on the [download page](./).
+
+GIMP makes use of the Gimp Toolkit (GTK+) and other libraries that must be installed first. Look in
Requirements above to find out more.
+
+Compile as a normal user using: <kbd>./configure && make</kbd> and then as root <kbd>make install</kbd>
+
+If all goes well, a good while later, you will have a brand spanking new GIMP to play with. Unfortunately,
it has been rumored that it isn't always that easy. So, here are a few common problems and some solutions ...
+
+For some more specific info, you may want to read the [INSTALL](INSTALL) file from the main GIMP
distribution.
+
+
+## Other Packages
+
+
+### Print plug-in does not compile
+
+Starting with version 1.2.4, the print plug-in depends on libgimpprint, which is now distributed as a
separate package. The previous versions of GIMP (up to 1.2.3) included all files as part of the GIMP
distribution, but you should now download and install libgimpprint 4.2.6 separately from the Gimp-Print site:
+
+[http://gimp-print.sourceforge.net/](http://gimp-print.sourceforge.net/)
+
+Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the print plug-in should compile.
+
+### JPEG plug-in does not compile
+
+The jpeg plug-in requires the jpeg library. If you don't have it installed or you have a very old version,
then you need to get a recent jpeg library. The places to look are:
+
+[ftp://ftp.uu.net/graphics/jpeg/](ftp://ftp.uu.net/graphics/jpeg/)
+
+Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the jpeg plug-in should compile.
+
+### TIFF plug-in does not compile
+
+The tiff plug-in requires the tiff library. See the jpeg problem mentioned above. Same deal, different lib.
The places to look are at:
+
+[ftp://ftp.sgi.com/graphics/tiff/](ftp://ftp.sgi.com/graphics/tiff/)
+
+Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the tiff plug-in should compile.
+
+### PNG plug-in does not compile
+
+The png plug-in requires libpng and libz (zlib). See the jpeg problem mentioned above. Same deal, different
lib. The places to look are at:
+
+[ftp://ftp.uu.net/graphics/png/src/](ftp://ftp.uu.net/graphics/png/src/)
+
+Once the lib is compiled and installed, run <kbd>ldconfig</kbd> as root and the png plug-in should compile.
+
+### XPM plug-in does not compile
+
+The xpm plug-in requires the xpm library. See the jpeg problem above. Same deal, different lib. The places
to look are at:
+
+[ftp://ftp.x.org/contrib/libraries/](ftp://ftp.x.org/contrib/libraries/)
+
+### I have no SVG support
+
+SVG support requires at least version 2.2 of the rsvg library from gnome.org. This can be found at:
+
+[ftp://ftp.gnome.org/mirror/gnome.org/sources/librsvg/](ftp://ftp.gnome.org/mirror/gnome.org/sources/librsvg/2.6/)
+
diff --git a/content/frontpage/index.md b/content/frontpage/index.md
index 1dfa668..8aa7931 100644
--- a/content/frontpage/index.md
+++ b/content/frontpage/index.md
@@ -1,7 +1,7 @@
-Title: GIMP
-Date: 2015-08-19T11:43:22-05:00
-URL:
-save_as: index.html
-Template: home
-
-I'm just a placeholder. Refer to /about/meta/frontpage.(md|html) for more information.
+Title: GIMP
+Date: 2015-08-19T11:43:22-05:00
+URL:
+save_as: index.html
+Template: home
+
+I'm just a placeholder. Refer to /about/meta/frontpage.(md|html) for more information.
diff --git a/content/links/index.md b/content/links/index.md
index 0db9b1d..ba6b92d 100644
--- a/content/links/index.md
+++ b/content/links/index.md
@@ -1,176 +1,176 @@
-Title: GIMP Links
-Date: 2015-08-17T11:31:37-05:00
-Modified: 2015-08-17T11:31:42-05:00
-Authors: Pat David
-Status: hidden
-
-
-This page contains the best links to interesting GIMP-related sites. If you want to link to us instead,
please have a look at [this other page](/about/linking.html).
-
-## Important GIMP Links
-
-* [The GNU Image Manipulation Program](//www.gimp.org/) - www.gimp.org
-* [GIMP Wiki](http://wiki.gimp.org/) - wiki.gimp.org
-* [GIMP Bugzilla](https://bugzilla.gnome.org/) - bugzilla.gnome.org
-* [The GIMP Toolkit](http://www.gtk.org/) - www.gtk.org
-* [GNU Project](http://www.gnu.org/) - www.gnu.org
-* [GNU General Public License](/about/COPYING) - GPL
-
-## GIMP RSS feeds
-
-* [GIMP Active
Bugs](https://bugzilla.gnome.org/buglist.cgi?bug_file_loc_type=substring&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&changedin=7&chfieldto=Now&product=GIMP&query_format=advanced&title=Bug%20List:%20GIMP%20-%20Current%20Bug%20Week&ctype=atom)
-
-## Other Useful Links
-
-* [gimp.org](#org)
-* [Tutorials](#tuts)
-* [Communities](#clubs)
-* [Development](#development)
-* [Created with GIMP](#created)
-* [More GIMP-links](#more)
-* [Other Graphics Applications](#other)
-
-## <a name="org"></a>gimp.org
-
-[bugzilla.gnome.org](https://bugzilla.gnome.org)
- Take your bugs here.
-
-[wiki.gimp.org](http://wiki.gimp.org)
- GIMP Developer site
-
-[gui.gimp.org](http://gui.gimp.org "GIMP Usability")
- GIMP UI Redesign Wiki
-
-[docs.gimp.org](http://docs.gimp.org)
- GIMP Documentation
-
-[registry.gimp.org](http://registry.gimp.org)
- Plug-ins & Scripts
-
-[More ...](org.html)
-
-## <a name="development"></a>GIMP Development Links
-
-[GIMP developers](http://wiki.gimp.org)
- The main GIMP development website.
-
-[Martin Nordholts' GIMP Blog](http://www.chromecode.com/)
- What happens in GIMP development.
-
-[GEGL](http://www.gegl.org/)
- An image processing library based on GObjects.
-
-[GNOME GIT](https://git.gnome.org/)
- GNOME GIT source code repository
-
-## <a name="tuts"></a>Tutorials
-
-[Getting Around in GIMP](http://blog.patdavid.net/p/getting-around-in-gimp.html)
- A collection of tutorials aimed at photography and retouching.
-
-[Search GIMP tutorials](http://www.pixel2life.com/tutorials/gimp/)
- This site lets you find and rate GIMP tutorials hosted on other sites (note: with advertisements).
-
-[Gimp.Tutorials](http://www.ghuj.com/)
- This site lets you find and comment on GIMP tutorials hosted on other sites (note: with advertisements).
-
-[gimpusers.com Tutorials](http://www.gimpusers.com/tutorials.php)
- Tutorials on gimpusers.com (English + German)
-
-[gimps.de](http://gimps.de/)
- has lots of GIMP tutorials; most of the texts are in German and English.
-
-[Gimpology](http://gimpology.com/)
- Tutorials for the gimp
-
-[gimp-tutorials.net](http://gimp-tutorials.net/)
- More GIMP tutorials
-
-## <a name="more"></a>More GIMP-links
-
-[GIMP-startpagina](http://gimp.startpagina.nl) <small>(Dutch version)</small>
- Just one page, but contains the most up-to-date collection of links to GIMP-sites.
-
-[GIMP-startpage](http://gimp.start4all.com) <small>(English version)</small>
- Essentially the same as the one above, but this time in English.
-
-[GIMP-category from ODP](http://www.dmoz.org/Computers/Software/Graphics/Image_Editing/The_GIMP/)
- This OpenDirectoryProject-category holds links to GIMP-sites (like this page).
-
-[Meet the GIMP!](http://meetthegimp.org)
- A video podcast about the free graphics program GIMP
-
-[DeviantArt](http://www.deviantart.com/resources/applications/)
- Resources (brushes, scripts, plug-ins) for GIMP and other applications
-
-## <a name="clubs"></a>Clubs & Communities
-
-[English GIMP-club](http://tech.groups.yahoo.com/group/thegimp2/)
- English-spoken community to discuss usage of GIMP
-
-[GIMP in Russian](http://www.gimp.ru)
- Russian site about GIMP. Articles, tutorials, FAQ, forum.
-
-[Linuxartist.org](http://www.linuxartist.org)
- A resource for artist using GNU/Linux.
-
-[gimpforum.de](http://www.gimpforum.de/)
- German-spoken forum focusing on GIMP. News, tutorials, user-to-user help and galleries.
-
-[gimpusers.de](http://www.gimpusers.de/)
- German GIMP platform offering tips & information about GIMP and a growing tutorials database.
-
-[gimpusers.com](http://www.gimpusers.com/)
- An international community site offering tips, news and a growing tutorials database.
-
-[GIMP in Lithuanian](http://gimp.akl.lt/)
- Lithuanian site about GIMP, featuring news, tutorials, forum and galleries.
-
-[GIMP.org.es](//www.gimp.org.es)
- News, tutorials, forum, galleries for Spanish-speaking users.
-
-[GIMP.hu](http://www.gimp.hu)
- News, blog and forum in Magyar (Hungarian).
-
-[gimpuj.info](http://www.gimpuj.info/)
- GIMP for Polish-speaking users: news, forum, tutorials, gallery.
-
-[www.gimp.no](http://www.gimp.no)
- Forum and galleries in Norwegian.
-
-[GUG - Gimp User Group](http://gug.criticalhit.dk/)
- Forum, tutorials, galleries.
-
-[GimpChat.com](http://gimpchat.com/)
- Forum, tutorials, galleries and resources.
-
-[Gimper](http://gimper.net/)
- Forum, tutorials, galleries and resources.
-
-## <a name="created"></a>Created with GIMP
-
-[Computer-graphics with GIMP](http://www.dmoz.org/Arts/Visual_Arts/Computer_Graphics/The_GIMP/)
- This OpenDirectoryProject-category holds links to galleries of images created with GIMP
-
-## <a name="other"></a>Other Graphics Applications
-
-[ImageMagick](http://www.imagemagick.org/)
- A collection of tools and libraries that work at the command line as well.
-
-[Tux Paint](http://www.tuxpaint.org/)
- A drawing program for young children.
-
-[Krita](http://www.krita.org/)
- Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital
painting files from scratch by masters.
-
-[XV](http://www.trilon.com/xv/)
- One of the original Unix graphics applications.
-
-[Skencil](http://www.skencil.org/) (formerly known as Sketch)
- A vector drawing program for Unix.
-
-[Inkscape](http://www.inkscape.org/)
- Very powerful [SVG](http://www.w3.org/Graphics/SVG/)-based illustration package distributed under the GNU
GPL.
-
-[Blender](http://www.blender.org/)
- Multi-platform full featured 3D content creation suite, also distributed under the GPL.
+Title: GIMP Links
+Date: 2015-08-17T11:31:37-05:00
+Modified: 2015-08-17T11:31:42-05:00
+Authors: Pat David
+Status: hidden
+
+
+This page contains the best links to interesting GIMP-related sites. If you want to link to us instead,
please have a look at [this other page](/about/linking.html).
+
+## Important GIMP Links
+
+* [The GNU Image Manipulation Program](//www.gimp.org/) - www.gimp.org
+* [GIMP Wiki](http://wiki.gimp.org/) - wiki.gimp.org
+* [GIMP Bugzilla](https://bugzilla.gnome.org/) - bugzilla.gnome.org
+* [The GIMP Toolkit](http://www.gtk.org/) - www.gtk.org
+* [GNU Project](http://www.gnu.org/) - www.gnu.org
+* [GNU General Public License](/about/COPYING) - GPL
+
+## GIMP RSS feeds
+
+* [GIMP Active
Bugs](https://bugzilla.gnome.org/buglist.cgi?bug_file_loc_type=substring&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&changedin=7&chfieldto=Now&product=GIMP&query_format=advanced&title=Bug%20List:%20GIMP%20-%20Current%20Bug%20Week&ctype=atom)
+
+## Other Useful Links
+
+* [gimp.org](#org)
+* [Tutorials](#tuts)
+* [Communities](#clubs)
+* [Development](#development)
+* [Created with GIMP](#created)
+* [More GIMP-links](#more)
+* [Other Graphics Applications](#other)
+
+## <a name="org"></a>gimp.org
+
+[bugzilla.gnome.org](https://bugzilla.gnome.org)
+ Take your bugs here.
+
+[wiki.gimp.org](http://wiki.gimp.org)
+ GIMP Developer site
+
+[gui.gimp.org](http://gui.gimp.org "GIMP Usability")
+ GIMP UI Redesign Wiki
+
+[docs.gimp.org](http://docs.gimp.org)
+ GIMP Documentation
+
+[registry.gimp.org](http://registry.gimp.org)
+ Plug-ins & Scripts
+
+[More ...](org.html)
+
+## <a name="development"></a>GIMP Development Links
+
+[GIMP developers](http://wiki.gimp.org)
+ The main GIMP development website.
+
+[Martin Nordholts' GIMP Blog](http://www.chromecode.com/)
+ What happens in GIMP development.
+
+[GEGL](http://www.gegl.org/)
+ An image processing library based on GObjects.
+
+[GNOME GIT](https://git.gnome.org/)
+ GNOME GIT source code repository
+
+## <a name="tuts"></a>Tutorials
+
+[Getting Around in GIMP](http://blog.patdavid.net/p/getting-around-in-gimp.html)
+ A collection of tutorials aimed at photography and retouching.
+
+[Search GIMP tutorials](http://www.pixel2life.com/tutorials/gimp/)
+ This site lets you find and rate GIMP tutorials hosted on other sites (note: with advertisements).
+
+[Gimp.Tutorials](http://www.ghuj.com/)
+ This site lets you find and comment on GIMP tutorials hosted on other sites (note: with advertisements).
+
+[gimpusers.com Tutorials](http://www.gimpusers.com/tutorials.php)
+ Tutorials on gimpusers.com (English + German)
+
+[gimps.de](http://gimps.de/)
+ has lots of GIMP tutorials; most of the texts are in German and English.
+
+[Gimpology](http://gimpology.com/)
+ Tutorials for the gimp
+
+[gimp-tutorials.net](http://gimp-tutorials.net/)
+ More GIMP tutorials
+
+## <a name="more"></a>More GIMP-links
+
+[GIMP-startpagina](http://gimp.startpagina.nl) <small>(Dutch version)</small>
+ Just one page, but contains the most up-to-date collection of links to GIMP-sites.
+
+[GIMP-startpage](http://gimp.start4all.com) <small>(English version)</small>
+ Essentially the same as the one above, but this time in English.
+
+[GIMP-category from ODP](http://www.dmoz.org/Computers/Software/Graphics/Image_Editing/The_GIMP/)
+ This OpenDirectoryProject-category holds links to GIMP-sites (like this page).
+
+[Meet the GIMP!](http://meetthegimp.org)
+ A video podcast about the free graphics program GIMP
+
+[DeviantArt](http://www.deviantart.com/resources/applications/)
+ Resources (brushes, scripts, plug-ins) for GIMP and other applications
+
+## <a name="clubs"></a>Clubs & Communities
+
+[English GIMP-club](http://tech.groups.yahoo.com/group/thegimp2/)
+ English-spoken community to discuss usage of GIMP
+
+[GIMP in Russian](http://www.gimp.ru)
+ Russian site about GIMP. Articles, tutorials, FAQ, forum.
+
+[Linuxartist.org](http://www.linuxartist.org)
+ A resource for artist using GNU/Linux.
+
+[gimpforum.de](http://www.gimpforum.de/)
+ German-spoken forum focusing on GIMP. News, tutorials, user-to-user help and galleries.
+
+[gimpusers.de](http://www.gimpusers.de/)
+ German GIMP platform offering tips & information about GIMP and a growing tutorials database.
+
+[gimpusers.com](http://www.gimpusers.com/)
+ An international community site offering tips, news and a growing tutorials database.
+
+[GIMP in Lithuanian](http://gimp.akl.lt/)
+ Lithuanian site about GIMP, featuring news, tutorials, forum and galleries.
+
+[GIMP.org.es](//www.gimp.org.es)
+ News, tutorials, forum, galleries for Spanish-speaking users.
+
+[GIMP.hu](http://www.gimp.hu)
+ News, blog and forum in Magyar (Hungarian).
+
+[gimpuj.info](http://www.gimpuj.info/)
+ GIMP for Polish-speaking users: news, forum, tutorials, gallery.
+
+[www.gimp.no](http://www.gimp.no)
+ Forum and galleries in Norwegian.
+
+[GUG - Gimp User Group](http://gug.criticalhit.dk/)
+ Forum, tutorials, galleries.
+
+[GimpChat.com](http://gimpchat.com/)
+ Forum, tutorials, galleries and resources.
+
+[Gimper](http://gimper.net/)
+ Forum, tutorials, galleries and resources.
+
+## <a name="created"></a>Created with GIMP
+
+[Computer-graphics with GIMP](http://www.dmoz.org/Arts/Visual_Arts/Computer_Graphics/The_GIMP/)
+ This OpenDirectoryProject-category holds links to galleries of images created with GIMP
+
+## <a name="other"></a>Other Graphics Applications
+
+[ImageMagick](http://www.imagemagick.org/)
+ A collection of tools and libraries that work at the command line as well.
+
+[Tux Paint](http://www.tuxpaint.org/)
+ A drawing program for young children.
+
+[Krita](http://www.krita.org/)
+ Krita is a KDE program for sketching and painting, offering an end–to–end solution for creating digital
painting files from scratch by masters.
+
+[XV](http://www.trilon.com/xv/)
+ One of the original Unix graphics applications.
+
+[Skencil](http://www.skencil.org/) (formerly known as Sketch)
+ A vector drawing program for Unix.
+
+[Inkscape](http://www.inkscape.org/)
+ Very powerful [SVG](http://www.w3.org/Graphics/SVG/)-based illustration package distributed under the GNU
GPL.
+
+[Blender](http://www.blender.org/)
+ Multi-platform full featured 3D content creation suite, also distributed under the GPL.
diff --git a/content/links/org.md b/content/links/org.md
index 8794eb1..06ef91c 100644
--- a/content/links/org.md
+++ b/content/links/org.md
@@ -1,47 +1,47 @@
-Title: GIMP Organization Links
-Date: 2015-08-17T11:31:37-05:00
-Modified: 2015-08-17T11:31:42-05:00
-Authors: Pat David
-Status: hidden
-
-
-## The GIMP Organization
-
-[bugzilla.gnome.org](https://bugzilla.gnome.org)
- Take your bugs here.
-
-[wiki.gimp.org](http://wiki.gimp.org)
- GIMP Developer site
-
-[gui.gimp.org](http://gui.gimp.org "GIMP Usability")
- GIMP UI Redesign Wiki
-
-[docs.gimp.org](http://docs.gimp.org)
- GIMP Documentation
-
-[registry.gimp.org](http://registry.gimp.org)
- Plug-ins & Scripts
-
-[ircd.gimp.org](http://ircd.gimp.org)
- The Official site of GIMPNet (irc://irc.gimp.org/).
-
-[adrian.gimp.org](http://adrian.gimp.org)
- Tutorials, and other useful and entertaining information.
-
-[carol.gimp.org](http://carol.gimp.org)
- Resources and tutorials.
-
-[mitch.gimp.org](http://mitch.gimp.org)
- Web space for a mad man, maybe.
-
-[tigert.gimp.org](http://www.tigert.com)
- Famous linux artist. Enough said.
-
-[sven.gimp.org](http://sven.gimp.org)
- Tutorials and some of the original GIMP script-fu.
-
-[vidar.gimp.org](http://vidar.gimp.org)
- Author of GIMPressionist and Fire Annimation plug-ins.
-
-[yosh.gimp.org](http://yosh.gimp.org)
- Someones GIMP art.
+Title: GIMP Organization Links
+Date: 2015-08-17T11:31:37-05:00
+Modified: 2015-08-17T11:31:42-05:00
+Authors: Pat David
+Status: hidden
+
+
+## The GIMP Organization
+
+[bugzilla.gnome.org](https://bugzilla.gnome.org)
+ Take your bugs here.
+
+[wiki.gimp.org](http://wiki.gimp.org)
+ GIMP Developer site
+
+[gui.gimp.org](http://gui.gimp.org "GIMP Usability")
+ GIMP UI Redesign Wiki
+
+[docs.gimp.org](http://docs.gimp.org)
+ GIMP Documentation
+
+[registry.gimp.org](http://registry.gimp.org)
+ Plug-ins & Scripts
+
+[ircd.gimp.org](http://ircd.gimp.org)
+ The Official site of GIMPNet (irc://irc.gimp.org/).
+
+[adrian.gimp.org](http://adrian.gimp.org)
+ Tutorials, and other useful and entertaining information.
+
+[carol.gimp.org](http://carol.gimp.org)
+ Resources and tutorials.
+
+[mitch.gimp.org](http://mitch.gimp.org)
+ Web space for a mad man, maybe.
+
+[tigert.gimp.org](http://www.tigert.com)
+ Famous linux artist. Enough said.
+
+[sven.gimp.org](http://sven.gimp.org)
+ Tutorials and some of the original GIMP script-fu.
+
+[vidar.gimp.org](http://vidar.gimp.org)
+ Author of GIMPressionist and Fire Annimation plug-ins.
+
+[yosh.gimp.org](http://yosh.gimp.org)
+ Someones GIMP art.
diff --git a/content/man/gimp-remote.md b/content/man/gimp-remote.md
index f9d5fcd..b4e2dfd 100644
--- a/content/man/gimp-remote.md
+++ b/content/man/gimp-remote.md
@@ -1,112 +1,112 @@
-Title: GIMP-REMOTE Man Page
-Date: 2015-08-17T11:31:37-05:00
-Modified: 2015-08-17T11:31:42-05:00
-Authors: Pat David
-Status: hidden
-
-<style>
-dt {
- font-family: monospace;
-}
-</style>
-
-[Table of Contents](#toc)
-
-## [Name](#toc0)
-
-gimp-remote - tells a running GIMP to open a (local or remote) image file.
-
-## [Synopsis](#toc1)
-
-<span style="font-family: monospace;" markdown="1">
-**gimp‑remote** [‑h] [‑‑help] [‑v] [‑‑version]
[‑‑display _display_] [‑e] [‑‑existing] [‑q] [‑‑query]
[‑s] [‑‑no‑splash] [‑p] [‑‑print‑xid] _filename_ ...
-</span>
-
-## [Description](#toc2)
-
-_gimp-remote_ is a small utility that tells a running GIMP to open one or more (local or remote) image
files. It does so by searching for a GIMP toolbox on the active display. If it can find a GIMP toolbox, a
synthetic drop event is created which makes GIMP think the files would have been dropped onto the toolbox.
More than one filename or URL can be specified on the commandline.
-
-If no GIMP window is found, _gimp-remote_ will start a new GIMP instance and ask it to load the specified
images. If no filename or URL is given, _gimp-remote_ will start a new GIMP. This behaviour can be altered
using the command-line options described below.
-
-If you are using GIMP on Linux or another platform with the D-Bus message bus system, chances are good that
this functionality is already built into the main GIMP executable and that you will not need to use
_gimp-remote_.
-
-## [Options](#toc3)
-
-_gimp-remote_ accepts the following options:
-
-<dl>
-
-<dt>-h, --help</dt>
-
-<dd>Display a list of all commandline options.</dd>
-
-<dt>-v, --version</dt>
-
-<dd>Output the version info.</dd>
-
-<dt>--display _display_</dt>
-
-<dd>Use the designated X display.</dd>
-
-<dt>-e, --existing</dt>
-
-<dd>If no running GIMP instance is found, don’t start a new one but exit.</dd>
-
-<dt>-q, --query</dt>
-
-<dd>Check if GIMP is running and exit. A status code of 0 indicates that a GIMP toolbox window has been
found on this display.</dd>
-
-<dt>-p, --print-xid</dt>
-
-<dd>Like -q, but print the X Window ID of the toolbox window if GIMP is already running. If no such window
exists nothing is printed.</dd>
-
-<dt>-s, --no-splash</dt>
-
-<dd>When starting GIMP, do not show the splash screen.</dd>
-
-</dl>
-
-## [Examples](#toc4)
-
-<dl>
-
-<dt>gimp-remote <a
href="http://www.gimp.org/images/wilber_the_gimp.png">http://www.gimp.org/images/wilber_the_gimp.png</a></dt>
-
-<dd>Loads the image from the GIMP website into a running GIMP or starts a new one.</dd>
-
-<dt>gimp-remote wilber.xcf wilma.xcf</dt>
-
-<dd>Loads the local files wilber.xcf and wilma.xcf into a running GIMP or starts a new one.</dd>
-
-</dl>
-
-## [Environment](#toc5)
-
-<dl>
-
-<dt>DISPLAY</dt>
-
-<dd>to get the default host and display number.</dd>
-
-</dl>
-
-## [Authors](#toc6)
-
-Sven Neumann and Simon Budig.
-
-## [See Also](#toc7)
-
-[**gimp**(1)](gimp.html) , [**gimprc**(5)](gimprc.html) , [**gimptool**(1)](gimptool.html)
-
-* * *
-
-<a name="toc">Table of Contents</a>
-
-* [Name](#sect0)
-* [Synopsis](#sect1)
-* [Description](#sect2)
-* [Options](#sect3)
-* [Examples](#sect4)
-* [Environment](#sect5)
-* [Authors](#sect6)
-* [See Also](#sect7)
+Title: GIMP-REMOTE Man Page
+Date: 2015-08-17T11:31:37-05:00
+Modified: 2015-08-17T11:31:42-05:00
+Authors: Pat David
+Status: hidden
+
+<style>
+dt {
+ font-family: monospace;
+}
+</style>
+
+[Table of Contents](#toc)
+
+## [Name](#toc0)
+
+gimp-remote - tells a running GIMP to open a (local or remote) image file.
+
+## [Synopsis](#toc1)
+
+<span style="font-family: monospace;" markdown="1">
+**gimp‑remote** [‑h] [‑‑help] [‑v] [‑‑version]
[‑‑display _display_] [‑e] [‑‑existing] [‑q] [‑‑query]
[‑s] [‑‑no‑splash] [‑p] [‑‑print‑xid] _filename_ ...
+</span>
+
+## [Description](#toc2)
+
+_gimp-remote_ is a small utility that tells a running GIMP to open one or more (local or remote) image
files. It does so by searching for a GIMP toolbox on the active display. If it can find a GIMP toolbox, a
synthetic drop event is created which makes GIMP think the files would have been dropped onto the toolbox.
More than one filename or URL can be specified on the commandline.
+
+If no GIMP window is found, _gimp-remote_ will start a new GIMP instance and ask it to load the specified
images. If no filename or URL is given, _gimp-remote_ will start a new GIMP. This behaviour can be altered
using the command-line options described below.
+
+If you are using GIMP on Linux or another platform with the D-Bus message bus system, chances are good that
this functionality is already built into the main GIMP executable and that you will not need to use
_gimp-remote_.
+
+## [Options](#toc3)
+
+_gimp-remote_ accepts the following options:
+
+<dl>
+
+<dt>-h, --help</dt>
+
+<dd>Display a list of all commandline options.</dd>
+
+<dt>-v, --version</dt>
+
+<dd>Output the version info.</dd>
+
+<dt>--display _display_</dt>
+
+<dd>Use the designated X display.</dd>
+
+<dt>-e, --existing</dt>
+
+<dd>If no running GIMP instance is found, don’t start a new one but exit.</dd>
+
+<dt>-q, --query</dt>
+
+<dd>Check if GIMP is running and exit. A status code of 0 indicates that a GIMP toolbox window has been
found on this display.</dd>
+
+<dt>-p, --print-xid</dt>
+
+<dd>Like -q, but print the X Window ID of the toolbox window if GIMP is already running. If no such window
exists nothing is printed.</dd>
+
+<dt>-s, --no-splash</dt>
+
+<dd>When starting GIMP, do not show the splash screen.</dd>
+
+</dl>
+
+## [Examples](#toc4)
+
+<dl>
+
+<dt>gimp-remote <a
href="http://www.gimp.org/images/wilber_the_gimp.png">http://www.gimp.org/images/wilber_the_gimp.png</a></dt>
+
+<dd>Loads the image from the GIMP website into a running GIMP or starts a new one.</dd>
+
+<dt>gimp-remote wilber.xcf wilma.xcf</dt>
+
+<dd>Loads the local files wilber.xcf and wilma.xcf into a running GIMP or starts a new one.</dd>
+
+</dl>
+
+## [Environment](#toc5)
+
+<dl>
+
+<dt>DISPLAY</dt>
+
+<dd>to get the default host and display number.</dd>
+
+</dl>
+
+## [Authors](#toc6)
+
+Sven Neumann and Simon Budig.
+
+## [See Also](#toc7)
+
+[**gimp**(1)](gimp.html) , [**gimprc**(5)](gimprc.html) , [**gimptool**(1)](gimptool.html)
+
+* * *
+
+<a name="toc">Table of Contents</a>
+
+* [Name](#sect0)
+* [Synopsis](#sect1)
+* [Description](#sect2)
+* [Options](#sect3)
+* [Examples](#sect4)
+* [Environment](#sect5)
+* [Authors](#sect6)
+* [See Also](#sect7)
diff --git a/content/man/gimp.md b/content/man/gimp.md
index 2906954..bd2d7f7 100644
--- a/content/man/gimp.md
+++ b/content/man/gimp.md
@@ -1,318 +1,318 @@
-Title: GIMP Man Page
-Date: 2015-08-17T11:31:37-05:00
-Modified: 2015-08-17T11:31:42-05:00
-Authors: Pat David
-Status: hidden
-
-<style>
-dt {
- font-family: monospace;
-}
-</style>
-
-
-[Table of Contents](#toc)
-
-## [Name](#toc0)
-
-gimp - an image manipulation and paint program.
-
-## [Synopsis](#toc1)
-
-<span style="font-family: monospace;" markdown="1">
-**gimp** [‑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 _display_]
[‑‑session _<name>_] [‑g] [‑‑gimprc _<gimprc>_]
[‑‑system‑gimprc _<gimprc>_] [‑‑dump‑gimprc]
[‑‑console‑messages] [‑‑debug‑handlers]
[‑‑stack‑trace‑mode _<mode>_]
[‑‑pdb‑compat‑mode _<mode>_] [‑‑batch‑interpreter&
nbsp;_<procedure>_] [‑b] [‑‑batch _<command>_] [_filename_] ...
-</span>
-<!--
-If you're reading this, I'm sorry for what you see above. It's a man page formatting. HTML makes a mess of
it.
-And raw man pages suck, imo. Here's what I did:
-1. Wrap it in a span, set the font family to mono.
-2. escape all brackets (not sure I need this).
-3. replace all "<" and ">" with < and >
-4. replace all hyphens/dashes with the non-breaking version: ‑
-5. replace all spaces inside brackets with non-breaking version:
--->
-
-## [Description](#toc2)
-
-GIMP is the _GNU Image Manipulation Program_. 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.
-
-GIMP 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.
-
-GIMP 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, GIMP has several scripting extension which allow
for advanced non-interactive processing and creation of images.
-
-GIMP ships with a second binary called _gimp-console_. This binary is a console-only version and behaves as
if _gimp_ was called with the --no-interface command-line option.
-
-On platforms with the D-Bus message bus system, GIMP 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 GIMP instance and quit.
-
-## [Options](#toc3)
-
-GIMP accepts the following options:
-
-<dl>
-
-<dt>-h, --help</dt>
-
-<dd>Show GIMP command-line options.</dd>
-
-<dt>--help-all</dt>
-
-<dd>Show all command-line options.</dd>
-
-<dt>--help-gtk</dt>
-
-<dd>Show GTK+ command-line options.</dd>
-
-<dt>--help-gegl</dt>
-
-<dd>Show GEGL command-line options.</dd>
-
-<dt>-v, --version</dt>
-
-<dd>Output version information and exit. When combined with the --verbose option, version information about
libraries used by GIMP is shown as well.</dd>
-
-<dt>--license</dt>
-
-<dd>Output license information and exit.</dd>
-
-<dt>--verbose</dt>
-
-<dd>Be verbose and create information on standard output.</dd>
-
-<dt>-n, --new-instance</dt>
-
-<dd>Do not attempt to reuse an already running GIMP instance. Always start a new one.</dd>
-
-<dt>-a, --as-new</dt>
-
-<dd>Open filenames passed on the command-line as new images, don’t set the filename on them.</dd>
-
-<dt>-i, --no-interface</dt>
-
-<dd>Run without a user interface.</dd>
-
-<dt>-d, --no-data</dt>
-
-<dd>Do not load patterns, gradients, palettes, or brushes. Often useful in non-interactive situations where
startup time is to be minimized.</dd>
-
-<dt>-f, --no-fonts</dt>
-
-<dd>Do not load any fonts. No text functionality will be available if this option is used.</dd>
-
-<dt>--display _display_</dt>
-
-<dd>Use the designated X display.</dd>
-
-<dt>-s, --no-splash</dt>
-
-<dd>Do not show the splash screen.</dd>
-
-<dt>--no-shm</dt>
-
-<dd>Do not use shared memory between GIMP and its plug-ins. Instead of using shared memory, GIMP will send
the data via pipe. This will result in slower performance than using shared memory.</dd>
-
-<dt>--no-cpu-accel</dt>
-
-<dd>Do not use CPU accelerations such as MMX or SSE even if GIMP detects that your CPU provides this
functionality.</dd>
-
-<dt>--session <em><name></em></dt>
-
-<dd>Use a different sessionrc for this GIMP session. The given session name is appended to the default
sessionrc filename.</dd>
-
-<dt>-g, --gimprc <em><gimprc></em></dt>
-
-<dd>Use an alternative gimprc instead of the default one. Useful in cases where plug-in paths or machine
specs may be different.</dd>
-
-<dt>--system-gimprc <em><gimprc></em></dt>
-
-<dd>Use an alternate system gimprc file.</dd>
-
-<dt>--dump-gimprc</dt>
-
-<dd>Output a gimprc file with default settings.</dd>
-
-<dt>--debug-handlers</dt>
-
-<dd>Enable debugging signal handlers.</dd>
-
-<dt>-c, --console-messages</dt>
-
-<dd>Do not popup dialog boxes on errors or warnings. Print the messages on the console instead.</dd>
-
-<dt>--stack-trace-mode <em>{never|query|always}</em></dt>
-
-<dd>If a stack-trace should be generated in case of fatal signals.</dd>
-
-<dt>--pdb-compat-mode <em>{off|on|warn}</em></dt>
-
-<dd>If the PDB should provide aliases for deprecated functions.</dd>
-
-<dt>--batch-interpreter <em><procedure></em></dt>
-
-<dd>Specifies the procedure to use to process batch events. The default is to let Script-Fu evaluate the
commands.</dd>
-
-<dt>-b, --batch <em><command></em></dt>
-
-<dd>Execute <em><command></em> non-interactively. This option may appear multiple times. The
<em><command></em> is passed to the batch interpreter. When <em><command></em> is
<strong>-</strong> the commands are read from standard input.</dd>
-
-</dl>
-
-## [Environment](#toc4)
-
-GIMP respects a number of environment variables.
-
-<dl>
-
-<dt>DISPLAY</dt>
-
-<dd>to get the default host and display number.</dd>
-
-<dt>GIMP2_DIRECTORY</dt>
-
-<dd>to get the name of the personal GIMP directory. If unset .gimp-2.6 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 the home directory.</dd>
-
-<dt>GIMP2_DATADIR</dt>
-
-<dd>to get the base location for data files such as brushes and patterns. If unset /usr/share/gimp/2.0 is
used.</dd>
-
-<dt>GIMP2_LOCALEDIR</dt>
-
-<dd>to get the base location for translations. If unset /usr/share/locale is used.</dd>
-
-<dt>GIMP2_PLUGINDIR</dt>
-
-<dd>to get the base location for plug-ins and modules. If unset /usr/lib64/gimp/2.0 is used.</dd>
-
-<dt>GIMP2_SYSCONFDIR</dt>
-
-<dd>to get the location of configuration files. If unset /etc/gimp/2.0 is used.
-
-On Linux GIMP 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 gimp executable file unless overridden by
the environment variables mentioned above.
-
-</dd>
-
-</dl>
-
-## [Files](#toc5)
-
-GIMP’s data files are stored in /usr/share/gimp/2.0, where ${datarootdir} is set on install, but is
typically /usr/share. GIMP’s system-wide configuration files are stored in /etc/gimp/2.0, where ${prefix} is
typically /usr.
-
-Most GIMP configuration is read in from the user’s init file, **$HOME**/.gimp-2.6/gimprc. The system wide
equivalent is in /etc/gimprc. The system wide file is parsed first and the user gimprc can override the
system settings. /etc/gimprc_user is the default gimprc placed in users’ home directories the first time GIMP
is run.
-
-**$HOME**/.gimp-2.6/devicerc - holds settings for input devices together with the tool, colors, brush,
pattern and gradient associated to that device.
-
-**$HOME**/.gimp-2.6/gtkrc - users set of GIMP-specific GTK+ config settings. Options such as widget color
and fonts sizes can be set here.
-
-/etc/gimp/2.0/gtkrc - sytem wide default set of GIMP-specific GTK+ config settings.
-
-**$HOME**/.gimp-2.6/menurc - user’s set of keybindings.
-
-**$HOME**/.gimp-2.6/parasiterc - Stores all persistent GIMP parasites. This file will be rewritten every
time you quit GIMP.
-
-**$HOME**/.gimp-2.6/sessionrc - This file takes session-specific info (that is info, you want to keep
between two GIMP 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 GIMP. If this file isn’t found, defaults are used.
-
-**$HOME**/.gimp-2.6/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.
-
-/etc/gimp/2.0/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
GIMP is ran. If this file isn’t found, defaults are used.
-
-**$HOME**/.gimp-2.6/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 GIMP.
-
-**$HOME**/.gimp-2.6/plug-ins - location of user installed plug-ins.
-
-**$HOME**/.gimp-2.6/pluginrc - plug-in initialization values are stored here. This file is parsed on startup
and regenerated if need be.
-
-**$HOME**/.gimp-2.6/modules - location of user installed modules.
-
-**$HOME**/.gimp-2.6/tmp - default location that GIMP uses as temporary space.
-
-/usr/share/gimp/2.0/brushes - system wide brush files.
-
-**$HOME**/.gimp-2.6/brushes - user created and installed brush files. These files are in the .gbr, .gih or
.vbr file formats.
-
-**$HOME**/.gimp-2.6/curves - Curve profiles and presets as saved from the Curves tool.
-
-**$HOME**/.gimp-2.6/gimpressionist - Presets and user created brushes and papers are stored here.
-
-**$HOME**/.gimp-2.6/levels - Level profiles and presets as saved from the Levels tool.
-
-/usr/share/gimp/2.0/palettes - the system wide palette files.
-
-**$HOME**/.gimp-2.6/palettes - user created and modified palette files. This files are in the .gpl format.
-
-/usr/share/gimp/2.0/patterns - basic set of patterns for use in GIMP.
-
-**$HOME**/.gimp-2.6/patterns - user created and installed gimp pattern files. This files are in the .pat
format.
-
-/usr/share/gimp/2.0/gradients - standard system wide set of gradient files.
-
-**$HOME**/.gimp-2.6/gradients - user created and installed gradient files.
-
-/usr/share/gimp/2.0/scripts - system wide directory of scripts used in Script-Fu and other scripting
extensions.
-
-**$HOME**/.gimp-2.6/scripts - user created and installed scripts.
-
-/usr/share/gimp/2.0/gflares - system wide directory used by the gflare plug-in.
-
-**$HOME**/.gimp-2.6/gflares - user created and installed gflare files.
-
-/usr/share/gimp/2.0/gfig - system wide directory used by the gfig plug-in.
-
-**$HOME**/.gimp-2.6/gfig - user created and installed gfig files.
-
-/usr/share/gimp/2.0/images/gimp-splash.png - the default image used for the GIMP splash screen.
-
-/usr/share/gimp/2.0/images/gimp-logo.png - image used in the GIMP about dialog.
-
-/usr/share/gimp/2.0/tips/gimp-tips.xml - tips as displayed in the "Tip of the Day" dialog box.
-
-## [Splash Images](#toc6)
-
-GIMP 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:
-
-
-1. GIMP tries to load a random splash screen from the directory **$HOME**/.gimp-2.6/splashes.
-
-2. It then falls back to using **$HOME**/.gimp-2.6/gimp-splash.png.
-
-3. If the user didn’t install any custom splash images, a random image is picked from
/usr/share/gimp/2.0/splashes.
-
-4. As a last resort, GIMP uses the default splash image located at
/usr/share/gimp/2.0/images/gimp-splash.png.
-
-## [Suggestions and Bug Reports](#toc7)
-
-Any bugs found should be reported to the online bug-tracking system available on the web at
[http://bugzilla.gnome.org/.](http://bugzilla.gnome.org/.) Before reporting bugs, please check to see if the
bug has already been reported.
-
-When reporting GIMP bugs, it is important to include a reliable way to reproduce the bug, version number of
GIMP (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.
-
-## [Other Info](#toc8)
-
-The canonical place to find GIMP info is at [http://www.gimp.org/.](//www.gimp.org/.) Here you can find
links to just about many other GIMP sites, tutorials, data sets, mailing list archives, and more.
-
-There is also a GIMP User Manual available at [http://docs.gimp.org/](http://docs.gimp.org/) that goes into
much more detail about the interactive use of GIMP.
-
-The latest version of GIMP and the GTK+ libs is always available at http://download.gimp.org/.
-
-## [Authors](#toc9)
-
-Spencer Kimball, Peter Mattis and the GIMP Development Team.
-
-With patches, fixes, plug-ins, extensions, scripts, translations, documentation and more from lots and lots
of people all over the world.
-
-## [See Also](#toc10)
-
-[**gimprc**(5)](gimprc.html) , [**gimptool**(1)](gimptool.html) ,
-
-* * *
-
-<a name="toc">**Table of Contents**</a>
-
-* [Name](#sect0)
-* [Synopsis](#sect1)
-* [Description](#sect2)
-* [Options](#sect3)
-* [Environment](#sect4)
-* [Files](#sect5)
-* [Splash Images](#sect6)
-* [Suggestions and Bug Reports](#sect7)
-* [Other Info](#sect8)
-* [Authors](#sect9)
-* [See Also](#sect10)
+Title: GIMP Man Page
+Date: 2015-08-17T11:31:37-05:00
+Modified: 2015-08-17T11:31:42-05:00
+Authors: Pat David
+Status: hidden
+
+<style>
+dt {
+ font-family: monospace;
+}
+</style>
+
+
+[Table of Contents](#toc)
+
+## [Name](#toc0)
+
+gimp - an image manipulation and paint program.
+
+## [Synopsis](#toc1)
+
+<span style="font-family: monospace;" markdown="1">
+**gimp** [‑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 _display_]
[‑‑session _<name>_] [‑g] [‑‑gimprc _<gimprc>_]
[‑‑system‑gimprc _<gimprc>_] [‑‑dump‑gimprc]
[‑‑console‑messages] [‑‑debug‑handlers]
[‑‑stack‑trace‑mode _<mode>_]
[‑‑pdb‑compat‑mode _<mode>_] [‑‑batch‑interpreter&
nbsp;_<procedure>_] [‑b] [‑‑batch _<command>_] [_filename_] ...
+</span>
+<!--
+If you're reading this, I'm sorry for what you see above. It's a man page formatting. HTML makes a mess of
it.
+And raw man pages suck, imo. Here's what I did:
+1. Wrap it in a span, set the font family to mono.
+2. escape all brackets (not sure I need this).
+3. replace all "<" and ">" with < and >
+4. replace all hyphens/dashes with the non-breaking version: ‑
+5. replace all spaces inside brackets with non-breaking version:
+-->
+
+## [Description](#toc2)
+
+GIMP is the _GNU Image Manipulation Program_. 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.
+
+GIMP 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.
+
+GIMP 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, GIMP has several scripting extension which allow
for advanced non-interactive processing and creation of images.
+
+GIMP ships with a second binary called _gimp-console_. This binary is a console-only version and behaves as
if _gimp_ was called with the --no-interface command-line option.
+
+On platforms with the D-Bus message bus system, GIMP 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 GIMP instance and quit.
+
+## [Options](#toc3)
+
+GIMP accepts the following options:
+
+<dl>
+
+<dt>-h, --help</dt>
+
+<dd>Show GIMP command-line options.</dd>
+
+<dt>--help-all</dt>
+
+<dd>Show all command-line options.</dd>
+
+<dt>--help-gtk</dt>
+
+<dd>Show GTK+ command-line options.</dd>
+
+<dt>--help-gegl</dt>
+
+<dd>Show GEGL command-line options.</dd>
+
+<dt>-v, --version</dt>
+
+<dd>Output version information and exit. When combined with the --verbose option, version information about
libraries used by GIMP is shown as well.</dd>
+
+<dt>--license</dt>
+
+<dd>Output license information and exit.</dd>
+
+<dt>--verbose</dt>
+
+<dd>Be verbose and create information on standard output.</dd>
+
+<dt>-n, --new-instance</dt>
+
+<dd>Do not attempt to reuse an already running GIMP instance. Always start a new one.</dd>
+
+<dt>-a, --as-new</dt>
+
+<dd>Open filenames passed on the command-line as new images, don’t set the filename on them.</dd>
+
+<dt>-i, --no-interface</dt>
+
+<dd>Run without a user interface.</dd>
+
+<dt>-d, --no-data</dt>
+
+<dd>Do not load patterns, gradients, palettes, or brushes. Often useful in non-interactive situations where
startup time is to be minimized.</dd>
+
+<dt>-f, --no-fonts</dt>
+
+<dd>Do not load any fonts. No text functionality will be available if this option is used.</dd>
+
+<dt>--display _display_</dt>
+
+<dd>Use the designated X display.</dd>
+
+<dt>-s, --no-splash</dt>
+
+<dd>Do not show the splash screen.</dd>
+
+<dt>--no-shm</dt>
+
+<dd>Do not use shared memory between GIMP and its plug-ins. Instead of using shared memory, GIMP will send
the data via pipe. This will result in slower performance than using shared memory.</dd>
+
+<dt>--no-cpu-accel</dt>
+
+<dd>Do not use CPU accelerations such as MMX or SSE even if GIMP detects that your CPU provides this
functionality.</dd>
+
+<dt>--session <em><name></em></dt>
+
+<dd>Use a different sessionrc for this GIMP session. The given session name is appended to the default
sessionrc filename.</dd>
+
+<dt>-g, --gimprc <em><gimprc></em></dt>
+
+<dd>Use an alternative gimprc instead of the default one. Useful in cases where plug-in paths or machine
specs may be different.</dd>
+
+<dt>--system-gimprc <em><gimprc></em></dt>
+
+<dd>Use an alternate system gimprc file.</dd>
+
+<dt>--dump-gimprc</dt>
+
+<dd>Output a gimprc file with default settings.</dd>
+
+<dt>--debug-handlers</dt>
+
+<dd>Enable debugging signal handlers.</dd>
+
+<dt>-c, --console-messages</dt>
+
+<dd>Do not popup dialog boxes on errors or warnings. Print the messages on the console instead.</dd>
+
+<dt>--stack-trace-mode <em>{never|query|always}</em></dt>
+
+<dd>If a stack-trace should be generated in case of fatal signals.</dd>
+
+<dt>--pdb-compat-mode <em>{off|on|warn}</em></dt>
+
+<dd>If the PDB should provide aliases for deprecated functions.</dd>
+
+<dt>--batch-interpreter <em><procedure></em></dt>
+
+<dd>Specifies the procedure to use to process batch events. The default is to let Script-Fu evaluate the
commands.</dd>
+
+<dt>-b, --batch <em><command></em></dt>
+
+<dd>Execute <em><command></em> non-interactively. This option may appear multiple times. The
<em><command></em> is passed to the batch interpreter. When <em><command></em> is
<strong>-</strong> the commands are read from standard input.</dd>
+
+</dl>
+
+## [Environment](#toc4)
+
+GIMP respects a number of environment variables.
+
+<dl>
+
+<dt>DISPLAY</dt>
+
+<dd>to get the default host and display number.</dd>
+
+<dt>GIMP2_DIRECTORY</dt>
+
+<dd>to get the name of the personal GIMP directory. If unset .gimp-2.6 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 the home directory.</dd>
+
+<dt>GIMP2_DATADIR</dt>
+
+<dd>to get the base location for data files such as brushes and patterns. If unset /usr/share/gimp/2.0 is
used.</dd>
+
+<dt>GIMP2_LOCALEDIR</dt>
+
+<dd>to get the base location for translations. If unset /usr/share/locale is used.</dd>
+
+<dt>GIMP2_PLUGINDIR</dt>
+
+<dd>to get the base location for plug-ins and modules. If unset /usr/lib64/gimp/2.0 is used.</dd>
+
+<dt>GIMP2_SYSCONFDIR</dt>
+
+<dd>to get the location of configuration files. If unset /etc/gimp/2.0 is used.
+
+On Linux GIMP 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 gimp executable file unless overridden by
the environment variables mentioned above.
+
+</dd>
+
+</dl>
+
+## [Files](#toc5)
+
+GIMP’s data files are stored in /usr/share/gimp/2.0, where ${datarootdir} is set on install, but is
typically /usr/share. GIMP’s system-wide configuration files are stored in /etc/gimp/2.0, where ${prefix} is
typically /usr.
+
+Most GIMP configuration is read in from the user’s init file, **$HOME**/.gimp-2.6/gimprc. The system wide
equivalent is in /etc/gimprc. The system wide file is parsed first and the user gimprc can override the
system settings. /etc/gimprc_user is the default gimprc placed in users’ home directories the first time GIMP
is run.
+
+**$HOME**/.gimp-2.6/devicerc - holds settings for input devices together with the tool, colors, brush,
pattern and gradient associated to that device.
+
+**$HOME**/.gimp-2.6/gtkrc - users set of GIMP-specific GTK+ config settings. Options such as widget color
and fonts sizes can be set here.
+
+/etc/gimp/2.0/gtkrc - sytem wide default set of GIMP-specific GTK+ config settings.
+
+**$HOME**/.gimp-2.6/menurc - user’s set of keybindings.
+
+**$HOME**/.gimp-2.6/parasiterc - Stores all persistent GIMP parasites. This file will be rewritten every
time you quit GIMP.
+
+**$HOME**/.gimp-2.6/sessionrc - This file takes session-specific info (that is info, you want to keep
between two GIMP 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 GIMP. If this file isn’t found, defaults are used.
+
+**$HOME**/.gimp-2.6/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.
+
+/etc/gimp/2.0/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
GIMP is ran. If this file isn’t found, defaults are used.
+
+**$HOME**/.gimp-2.6/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 GIMP.
+
+**$HOME**/.gimp-2.6/plug-ins - location of user installed plug-ins.
+
+**$HOME**/.gimp-2.6/pluginrc - plug-in initialization values are stored here. This file is parsed on startup
and regenerated if need be.
+
+**$HOME**/.gimp-2.6/modules - location of user installed modules.
+
+**$HOME**/.gimp-2.6/tmp - default location that GIMP uses as temporary space.
+
+/usr/share/gimp/2.0/brushes - system wide brush files.
+
+**$HOME**/.gimp-2.6/brushes - user created and installed brush files. These files are in the .gbr, .gih or
.vbr file formats.
+
+**$HOME**/.gimp-2.6/curves - Curve profiles and presets as saved from the Curves tool.
+
+**$HOME**/.gimp-2.6/gimpressionist - Presets and user created brushes and papers are stored here.
+
+**$HOME**/.gimp-2.6/levels - Level profiles and presets as saved from the Levels tool.
+
+/usr/share/gimp/2.0/palettes - the system wide palette files.
+
+**$HOME**/.gimp-2.6/palettes - user created and modified palette files. This files are in the .gpl format.
+
+/usr/share/gimp/2.0/patterns - basic set of patterns for use in GIMP.
+
+**$HOME**/.gimp-2.6/patterns - user created and installed gimp pattern files. This files are in the .pat
format.
+
+/usr/share/gimp/2.0/gradients - standard system wide set of gradient files.
+
+**$HOME**/.gimp-2.6/gradients - user created and installed gradient files.
+
+/usr/share/gimp/2.0/scripts - system wide directory of scripts used in Script-Fu and other scripting
extensions.
+
+**$HOME**/.gimp-2.6/scripts - user created and installed scripts.
+
+/usr/share/gimp/2.0/gflares - system wide directory used by the gflare plug-in.
+
+**$HOME**/.gimp-2.6/gflares - user created and installed gflare files.
+
+/usr/share/gimp/2.0/gfig - system wide directory used by the gfig plug-in.
+
+**$HOME**/.gimp-2.6/gfig - user created and installed gfig files.
+
+/usr/share/gimp/2.0/images/gimp-splash.png - the default image used for the GIMP splash screen.
+
+/usr/share/gimp/2.0/images/gimp-logo.png - image used in the GIMP about dialog.
+
+/usr/share/gimp/2.0/tips/gimp-tips.xml - tips as displayed in the "Tip of the Day" dialog box.
+
+## [Splash Images](#toc6)
+
+GIMP 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:
+
+
+1. GIMP tries to load a random splash screen from the directory **$HOME**/.gimp-2.6/splashes.
+
+2. It then falls back to using **$HOME**/.gimp-2.6/gimp-splash.png.
+
+3. If the user didn’t install any custom splash images, a random image is picked from
/usr/share/gimp/2.0/splashes.
+
+4. As a last resort, GIMP uses the default splash image located at
/usr/share/gimp/2.0/images/gimp-splash.png.
+
+## [Suggestions and Bug Reports](#toc7)
+
+Any bugs found should be reported to the online bug-tracking system available on the web at
[http://bugzilla.gnome.org/.](http://bugzilla.gnome.org/.) Before reporting bugs, please check to see if the
bug has already been reported.
+
+When reporting GIMP bugs, it is important to include a reliable way to reproduce the bug, version number of
GIMP (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.
+
+## [Other Info](#toc8)
+
+The canonical place to find GIMP info is at [http://www.gimp.org/.](//www.gimp.org/.) Here you can find
links to just about many other GIMP sites, tutorials, data sets, mailing list archives, and more.
+
+There is also a GIMP User Manual available at [http://docs.gimp.org/](http://docs.gimp.org/) that goes into
much more detail about the interactive use of GIMP.
+
+The latest version of GIMP and the GTK+ libs is always available at http://download.gimp.org/.
+
+## [Authors](#toc9)
+
+Spencer Kimball, Peter Mattis and the GIMP Development Team.
+
+With patches, fixes, plug-ins, extensions, scripts, translations, documentation and more from lots and lots
of people all over the world.
+
+## [See Also](#toc10)
+
+[**gimprc**(5)](gimprc.html) , [**gimptool**(1)](gimptool.html) ,
+
+* * *
+
+<a name="toc">**Table of Contents**</a>
+
+* [Name](#sect0)
+* [Synopsis](#sect1)
+* [Description](#sect2)
+* [Options](#sect3)
+* [Environment](#sect4)
+* [Files](#sect5)
+* [Splash Images](#sect6)
+* [Suggestions and Bug Reports](#sect7)
+* [Other Info](#sect8)
+* [Authors](#sect9)
+* [See Also](#sect10)
diff --git a/content/man/gimprc.md b/content/man/gimprc.md
index 2a1cfb8..35d047f 100644
--- a/content/man/gimprc.md
+++ b/content/man/gimprc.md
@@ -1,1073 +1,1073 @@
-Title: gimprc Man Page
-Date: 2015-08-17T11:31:37-05:00
-Modified: 2015-08-17T11:31:42-05:00
-Authors: Pat David
-Status: hidden
-
-<style>
-dt {
- font-family: monospace;
-}
-</style>
-
-[Table of Contents](#toc)
-
-## [Name](#toc0)
-
-gimprc - gimp configuration file
-
-## [Description](#toc1)
-
-The **gimprc** file is a configuration file read by GIMP when it starts up. There are two of these: one
system-wide one stored in /etc/gimp/2.0/gimprc and a per-user **$HOME**/.gimp-2.6/gimprc which may override
system settings.
-
-Comments are introduced by a hash sign (#), and continue until the end of the line. Blank lines are ignored.
-
-The **gimprc** file associates values with properties. These properties may be set by lisp-like assignments
of the form:
-
-<dl>
-
-<dt><em><strong>(property-name value)</strong></em></dt>
-
-<dt>where:</dt>
-
-<dt><em>property-name</em></dt>
-
-<dd>is one of the property names described below.</dd>
-
-<dt><em>value</em></dt>
-
-<dd>is the value the property is to be set to.</dd>
-
-</dl>
-
-Either spaces or tabs may be used to separate the name from the value.
-
-## [Properties](#toc2)
-
-Valid properties and their default values are:
-
-<dl>
-
-<dt>(temp-path "${gimp_dir}/tmp")</dt>
-
-<dd>
-
-Sets the folder for temporary storage. Files will appear here during the course of running GIMP. Most files
will disappear when GIMP exits, but some files are likely to remain, so it is best if this folder not be one
that is shared by other users. This is a single folder.
-
-</dd>
-
-<dt>(swap-path "${gimp_dir}")</dt>
-
-<dd>
-
-Sets the swap file location. GIMP uses a tile based memory allocation scheme. The swap file is used to
quickly and easily swap tiles out to disk and back in. Be aware that the swap file can easily get very large
if GIMP is used with large images. Also, things can get horribly slow if the swap file is created on a folder
that is mounted over NFS. For these reasons, it may be desirable to put your swap file in "/tmp". This is a
single folder.
-
-</dd>
-
-<dt>(num-processors 1)</dt>
-
-<dd>
-
-Sets how many processors GIMP should try to use simultaneously. This is an integer value.
-
-</dd>
-
-<dt>(tile-cache-size 1024M)</dt>
-
-<dd>
-
-When the amount of pixel data exceeds this limit, GIMP will start to swap tiles to disk. This is a lot
slower but it makes it possible to work on images that wouldn’t fit into memory otherwise. If you have a lot
of RAM, you may want to set this to a higher value. The integer size can contain a suffix of ’B’, ’K’, ’M’ or
’G’ which makes GIMP interpret the size as being specified in bytes, kilobytes, megabytes or gigabytes. If no
suffix is specified the size defaults to being specified in kilobytes.
-
-</dd>
-
-<dt>(interpolation-type cubic)</dt>
-
-<dd>
-
-Sets the level of interpolation used for scaling and other transformations. Possible values are none,
linear, cubic and lanczos.
-
-</dd>
-
-<dt>(plug-in-path "${gimp_dir}/plug-ins:${gimp_plug_in_dir}/plug-ins")</dt>
-
-<dd>
-
-Sets the plug-in search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(module-path "${gimp_dir}/modules:${gimp_plug_in_dir}/modules")</dt>
-
-<dd>
-
-Sets the module search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(interpreter-path "${gimp_dir}/interpreters:${gimp_plug_in_dir}/interpreters")</dt>
-
-<dd>
-
-Sets the interpreter search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(environ-path "${gimp_dir}/environ:${gimp_plug_in_dir}/environ")</dt>
-
-<dd>
-
-Sets the environ search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(brush-path "${gimp_dir}/brushes:${gimp_data_dir}/brushes")</dt>
-
-<dd>
-
-Sets the brush search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(brush-path-writable "${gimp_dir}/brushes")</dt>
-
-<dd>
-
-This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(pattern-path "${gimp_dir}/patterns:${gimp_data_dir}/patterns")</dt>
-
-<dd>
-
-Sets the pattern search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(pattern-path-writable "${gimp_dir}/patterns")</dt>
-
-<dd>
-
-This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(palette-path "${gimp_dir}/palettes:${gimp_data_dir}/palettes")</dt>
-
-<dd>
-
-Sets the palette search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(palette-path-writable "${gimp_dir}/palettes")</dt>
-
-<dd>
-
-This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(gradient-path "${gimp_dir}/gradients:${gimp_data_dir}/gradients")</dt>
-
-<dd>
-
-Sets the gradient search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(gradient-path-writable "${gimp_dir}/gradients")</dt>
-
-<dd>
-
-This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(font-path "${gimp_dir}/fonts:${gimp_data_dir}/fonts")</dt>
-
-<dd>
-
-Where to look for fonts in addition to the system-wide installed fonts. This is a colon-separated list of
folders to search.
-
-</dd>
-
-<dt>(default-brush "Circle (11)")</dt>
-
-<dd>
-
-Specify a default brush. The brush is searched for in the specified brush path. This is a string value.
-
-</dd>
-
-<dt>(default-pattern "Pine")</dt>
-
-<dd>
-
-Specify a default pattern. This is a string value.
-
-</dd>
-
-<dt>(default-palette "Default")</dt>
-
-<dd>
-
-Specify a default palette. This is a string value.
-
-</dd>
-
-<dt>(default-gradient "FG to BG (RGB)")</dt>
-
-<dd>
-
-Specify a default gradient. This is a string value.
-
-</dd>
-
-<dt>(default-font "Sans")</dt>
-
-<dd>
-
-Specify a default font. This is a string value.
-
-</dd>
-
-<dt>(global-brush yes)</dt>
-
-<dd>
-
-When enabled, the selected brush will be used for all tools. Possible values are yes and no.
-
-</dd>
-
-<dt>(global-pattern yes)</dt>
-
-<dd>
-
-When enabled, the selected pattern will be used for all tools. Possible values are yes and no.
-
-</dd>
-
-<dt>(global-palette yes)</dt>
-
-<dd>
-
-When enabled, the selected palette will be used for all tools. Possible values are yes and no.
-
-</dd>
-
-<dt>(global-gradient yes)</dt>
-
-<dd>
-
-When enabled, the selected gradient will be used for all tools. Possible values are yes and no.
-
-</dd>
-
-<dt>(global-font yes)</dt>
-
-<dd>
-
-When enabled, the selected font will be used for all tools. Possible values are yes and no.
-
-</dd>
-
-<dt>(default-image</dt>
-
-<dd>
-<pre style="font-size: 0.85rem;">
- (width 640)
- (height 400)
- (unit pixels)
- (xresolution 72.000000)
- (yresolution 72.000000)
- (resolution-unit inches)
- (image-type rgb)
- (fill-type background-fill)
- (comment "Created with GIMP"))
-</pre>
-
-Sets the default image in the "File/New" dialog. This is a parameter list.
-
-</dd>
-
-<dt>(default-grid</dt>
-
-<dd><pre style="font-size: 0.85rem;">
-(style solid)
- (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
- (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
- (xspacing 10.000000)
- (yspacing 10.000000)
- (spacing-unit inches)
- (xoffset 0.000000)
- (yoffset 0.000000)
- (offset-unit inches))
-</pre>
-
-Specify a default image grid. This is a parameter list.
-
-</dd>
-
-<dt>(undo-levels 5)</dt>
-
-<dd>
-
-Sets the minimal number of operations that can be undone. More undo levels are kept available until the
undo-size limit is reached. This is an integer value.
-
-</dd>
-
-<dt>(undo-size 64M)</dt>
-
-<dd>
-
-Sets an upper limit to the memory that is used per image to keep operations on the undo stack. Regardless of
this setting, at least as many undo-levels as configured can be undone. The integer size can contain a suffix
of ’B’, ’K’, ’M’ or ’G’ which makes GIMP interpret the size as being specified in bytes, kilobytes, megabytes
or gigabytes. If no suffix is specified the size defaults to being specified in kilobytes.
-
-</dd>
-
-<dt>(undo-preview-size large)</dt>
-
-<dd>
-
-Sets the size of the previews in the Undo History. Possible values are tiny, extra-small, small, medium,
large, extra-large, huge, enormous and gigantic.
-
-</dd>
-
-<dt>(plug-in-history-size 10)</dt>
-
-<dd>
-
-How many recently used plug-ins to keep on the Filters menu. This is an integer value.
-
-</dd>
-
-<dt>(pluginrc-path "${gimp_dir}/pluginrc")</dt>
-
-<dd>
-
-Sets the pluginrc search path. This is a single filename.
-
-</dd>
-
-<dt>(layer-previews yes)</dt>
-
-<dd>
-
-Sets whether GIMP should create previews of layers and channels. Previews in the layers and channels dialog
are nice to have but they can slow things down when working with large images. Possible values are yes and no.
-
-</dd>
-
-<dt>(layer-preview-size medium)</dt>
-
-<dd>
-
-Sets the preview size used for layers and channel previews in newly created dialogs. Possible values are
tiny, extra-small, small, medium, large, extra-large, huge, enormous and gigantic.
-
-</dd>
-
-<dt>(thumbnail-size normal)</dt>
-
-<dd>
-
-Sets the size of the thumbnail shown in the Open dialog. Possible values are none, normal and large.
-
-</dd>
-
-<dt>(thumbnail-filesize-limit 4M)</dt>
-
-<dd>
-
-The thumbnail in the Open dialog will be automatically updated if the file being previewed is smaller than
the size set here. The integer size can contain a suffix of ’B’, ’K’, ’M’ or ’G’ which makes GIMP interpret
the size as being specified in bytes, kilobytes, megabytes or gigabytes. If no suffix is specified the size
defaults to being specified in kilobytes.
-
-</dd>
-
-<dt>(install-colormap no)</dt>
-
-<dd>
-
-Install a private colormap; might be useful on 8-bit (256 colors) displays. Possible values are yes and no.
-
-</dd>
-
-<dt>(min-colors 144)</dt>
-
-<dd>
-
-Generally only a concern for 8-bit displays, this sets the minimum number of system colors allocated for
GIMP. This is an integer value.
-
-</dd>
-
-<dt>(color-management</dt>
-
-<dd><pre style="font-size:0.85rem;">
-(mode display)
- (display-profile-from-gdk no)
- (display-rendering-intent perceptual)
- (simulation-rendering-intent perceptual)
- (simulation-gamut-check no)
- (out-of-gamut-color (color-rgb 0.501961 0.501961 0.501961))
- (display-module "CdisplayLcms"))
-</pre>
-
-Defines the color management behavior. This is a parameter list.
-
-</dd>
-
-<dt>(color-profile-policy ask)</dt>
-
-<dd>
-
-How to handle embedded color profiles when opening a file. Possible values are ask, keep and convert.
-
-</dd>
-
-<dt>(save-document-history yes)</dt>
-
-<dd>
-
-Keep a permanent record of all opened and saved files in the Recent Documents list. Possible values are yes
and no.
-
-</dd>
-
-<dt>(transparency-size medium-checks)</dt>
-
-<dd>
-
-Sets the size of the checkerboard used to display transparency. Possible values are small-checks,
medium-checks and large-checks.
-
-</dd>
-
-<dt>(transparency-type gray-checks)</dt>
-
-<dd>
-
-Sets the manner in which transparency is displayed in images. Possible values are light-checks, gray-checks,
dark-checks, white-only, gray-only and black-only.
-
-</dd>
-
-<dt>(snap-distance 8)</dt>
-
-<dd>
-
-This is the distance in pixels where Guide and Grid snapping activates. This is an integer value.
-
-</dd>
-
-<dt>(marching-ants-speed 200)</dt>
-
-<dd>
-
-Speed of marching ants in the selection outline. This value is in milliseconds (less time indicates faster
marching). This is an integer value.
-
-</dd>
-
-<dt>(resize-windows-on-zoom no)</dt>
-
-<dd>
-
-When enabled, the image window will automatically resize itself when zooming into and out of images.
Possible values are yes and no.
-
-</dd>
-
-<dt>(resize-windows-on-resize no)</dt>
-
-<dd>
-
-When enabled, the image window will automatically resize itself whenever the physical image size changes.
Possible values are yes and no.
-
-</dd>
-
-<dt>(default-dot-for-dot yes)</dt>
-
-<dd>
-
-When enabled, this will ensure that each pixel of an image gets mapped to a pixel on the screen. Possible
values are yes and no.
-
-</dd>
-
-<dt>(initial-zoom-to-fit yes)</dt>
-
-<dd>
-
-When enabled, this will ensure that the full image is visible after a file is opened, otherwise it will be
displayed with a scale of 1:1\. Possible values are yes and no.
-
-</dd>
-
-<dt>(perfect-mouse yes)</dt>
-
-<dd>
-
-When enabled, the X server is queried for the mouse’s current position on each motion event, rather than
relying on the position hint. This means painting with large brushes should be more accurate, but it may be
slower. Perversely, on some X servers enabling this option results in faster painting. Possible values are
yes and no.
-
-</dd>
-
-<dt>(cursor-mode tool-icon)</dt>
-
-<dd>
-
-Sets the type of mouse pointers to use. Possible values are tool-icon, tool-crosshair and crosshair.
-
-</dd>
-
-<dt>(cursor-updating yes)</dt>
-
-<dd>
-
-Context-dependent mouse pointers are helpful. They are enabled by default. However, they require overhead
that you may want to do without. Possible values are yes and no.
-
-</dd>
-
-<dt>(show-brush-outline yes)</dt>
-
-<dd>
-
-When enabled, all paint tools will show a preview of the current brush’s outline. Possible values are yes
and no.
-
-</dd>
-
-<dt>(show-paint-tool-cursor yes)</dt>
-
-<dd>
-
-When enabled, the mouse pointer will be shown over the image while using a paint tool. Possible values are
yes and no.
-
-</dd>
-
-<dt>(image-title-format "%D*%f-%p.%i (%t, %L) %wx%h")</dt>
-
-<dd>
-
-Sets the text to appear in image window titles. This is a format string; certain % character sequences are
recognised and expanded as follows:
-
-<pre style="font-size: 0.85rem;">
- %% literal percent sign
- %f bare filename, or "Untitled"
- %F full path to file, or "Untitled"
- %p PDB image id
- %i view instance number
- %t image type (RGB, grayscale, indexed)
- %z zoom factor as a percentage
- %s source scale factor
- %d destination scale factor
- %Dx expands to x if the image is dirty, the empty string otherwise
- %Cx expands to x if the image is clean, the empty string otherwise
- %B expands to (modified) if the image is dirty, the empty string otherwise
- %A expands to (clean) if the image is clean, the empty string otherwise
- %l the number of layers
- %L the number of layers (long form)
- %m memory used by the image
- %n the name of the active layer/channel
- %P the PDB id of the active layer/channel
- %w image width in pixels
- %W image width in real-world units
- %h image height in pixels
- %H image height in real-world units
- %u unit symbol
- %U unit abbreviation
-
-</pre>
-</dd>
-
-<dt>(image-status-format "%n (%m)")</dt>
-
-<dd>
-
-Sets the text to appear in image window status bars. This is a format string; certain % character sequences
are recognised and expanded as follows:
-
-<pre style="font-size:0.85rem;">
-%% literal percent sign
-%f bare filename, or "Untitled"
-%F full path to file, or "Untitled"
-%p PDB image id
-%i view instance number
-%t image type (RGB, grayscale, indexed)
-%z zoom factor as a percentage
-%s source scale factor
-%d destination scale factor
-%Dx expands to x if the image is dirty, the empty string otherwise
-%Cx expands to x if the image is clean, the empty string otherwise
-%B expands to (modified) if the image is dirty, the empty string otherwise
-%A expands to (clean) if the image is clean, the empty string otherwise
-%l the number of layers
-%L the number of layers (long form)
-%m memory used by the image
-%n the name of the active layer/channel
-%P the PDB id of the active layer/channel
-%w image width in pixels
-%W image width in real-world units
-%h image height in pixels
-%H image height in real-world units
-%u unit symbol
-%U unit abbreviation
-</pre>
-
-</dd>
-
-<dt>(confirm-on-close yes)</dt>
-
-<dd>
-
-Ask for confirmation before closing an image without saving. Possible values are yes and no.
-
-</dd>
-
-<dt>(monitor-xresolution 96.000000)</dt>
-
-<dd>
-
-Sets the monitor’s horizontal resolution, in dots per inch. If set to 0, forces the X server to be queried
for both horizontal and vertical resolution information. This is a float value.
-
-</dd>
-
-<dt>(monitor-yresolution 96.000000)</dt>
-
-<dd>
-
-Sets the monitor’s vertical resolution, in dots per inch. If set to 0, forces the X server to be queried for
both horizontal and vertical resolution information. This is a float value.
-
-</dd>
-
-<dt>(monitor-resolution-from-windowing-system yes)</dt>
-
-<dd>
-
-When enabled, GIMP will use the monitor resolution from the windowing system. Possible values are yes and no.
-
-</dd>
-
-<dt>(navigation-preview-size medium)</dt>
-
-<dd>
-
-Sets the size of the navigation preview available in the lower right corner of the image window. Possible
values are tiny, extra-small, small, medium, large, extra-large, huge, enormous and gigantic.
-
-</dd>
-
-<dt>(default-view</dt>
-
-<dd>
-<pre style="font-size: 0.85rem;">
-(show-menubar yes)
- (show-rulers yes)
- (show-scrollbars yes)
- (show-statusbar yes)
- (show-selection yes)
- (show-layer-boundary yes)
- (show-guides yes)
- (show-grid no)
- (show-sample-points yes)
- (padding-mode default)
- (padding-color (color-rgb 1.000000 1.000000 1.000000)))
-</pre>
-
-Sets the default settings for the image view. This is a parameter list.
-
-</dd>
-
-<dt>(default-fullscreen-view</dt>
-
-<dd>
-<pre style="font-size: 0.85rem;">>
-(show-menubar yes)
- (show-rulers yes)
- (show-scrollbars yes)
- (show-statusbar yes)
- (show-selection yes)
- (show-layer-boundary yes)
- (show-guides yes)
- (show-grid no)
- (show-sample-points yes)
- (padding-mode default)
- (padding-color (color-rgb 1.000000 1.000000 1.000000)))
-</pre>
-
-Sets the default settings used when an image is viewed in fullscreen mode. This is a parameter list.
-
-</dd>
-
-<dt>(activate-on-focus yes)</dt>
-
-<dd>
-
-When enabled, an image will become the active image when its image window receives the focus. This is useful
for window managers using "click to focus". Possible values are yes and no.
-
-</dd>
-
-<dt>(space-bar-action pan)</dt>
-
-<dd>
-
-What to do when the space bar is pressed in the image window. Possible values are none, pan and move.
-
-</dd>
-
-<dt>(xor-color (color-rgb 0.501961 1.000000 0.501961))</dt>
-
-<dd>
-
-Sets the color that is used for XOR drawing. This setting only exists as a workaround for buggy display
drivers. If lines on the canvas are not correctly undrawn, try to set this to white. The color is specified
in the form (color-rgb red green blue) with channel values as floats in the range of 0.0 to 1.0\.
-
-</dd>
-
-<dt>(zoom-quality high)</dt>
-
-<dd>
-
-There’s a tradeoff between speed and quality of the zoomed-out display. Possible values are low and high.
-
-</dd>
-
-<dt>(default-threshold 15)</dt>
-
-<dd>
-
-Tools such as fuzzy-select and bucket fill find regions based on a seed-fill algorithm. The seed fill starts
at the initially selected pixel and progresses in all directions until the difference of pixel intensity from
the original is greater than a specified threshold. This value represents the default threshold. This is an
integer value.
-
-</dd>
-
-<dt>(move-tool-changes-active no)</dt>
-
-<dd>
-
-If enabled, the move tool sets the edited layer or path as active. This used to be the default behaviour in
older versions. Possible values are yes and no.
-
-</dd>
-
-<dt>(trust-dirty-flag yes)</dt>
-
-<dd>
-
-When enabled, GIMP will not save an image if it has not been changed since it was opened. Possible values
are yes and no.
-
-</dd>
-
-<dt>(save-device-status no)</dt>
-
-<dd>
-
-Remember the current tool, pattern, color, and brush across GIMP sessions. Possible values are yes and no.
-
-</dd>
-
-<dt>(save-session-info yes)</dt>
-
-<dd>
-
-Save the positions and sizes of the main dialogs when GIMP exits. Possible values are yes and no.
-
-</dd>
-
-<dt>(restore-session yes)</dt>
-
-<dd>
-
-Let GIMP try to restore your last saved session on each startup. Possible values are yes and no.
-
-</dd>
-
-<dt>(save-tool-options no)</dt>
-
-<dd>
-
-Save the tool options when GIMP exits. Possible values are yes and no.
-
-</dd>
-
-<dt>(show-tooltips yes)</dt>
-
-<dd>
-
-Show a tooltip when the pointer hovers over an item. Possible values are yes and no.
-
-</dd>
-
-<dt>(tearoff-menus yes)</dt>
-
-<dd>
-
-When enabled, menus can be torn off. Possible values are yes and no.
-
-</dd>
-
-<dt>(can-change-accels no)</dt>
-
-<dd>
-
-When enabled, you can change keyboard shortcuts for menu items by hitting a key combination while the menu
item is highlighted. Possible values are yes and no.
-
-</dd>
-
-<dt>(save-accels yes)</dt>
-
-<dd>
-
-Save changed keyboard shortcuts when GIMP exits. Possible values are yes and no.
-
-</dd>
-
-<dt>(restore-accels yes)</dt>
-
-<dd>
-
-Restore saved keyboard shortcuts on each GIMP startup. Possible values are yes and no.
-
-</dd>
-
-<dt>(menu-mnemonics yes)</dt>
-
-<dd>
-
-When enabled, GIMP will show mnemonics in menus. Possible values are yes and no.
-
-</dd>
-
-<dt>(last-opened-size 10)</dt>
-
-<dd>
-
-How many recently opened image filenames to keep on the File menu. This is an integer value.
-
-</dd>
-
-<dt>(max-new-image-size 128M)</dt>
-
-<dd>
-
-GIMP will warn the user if an attempt is made to create an image that would take more memory than the size
specified here. The integer size can contain a suffix of ’B’, ’K’, ’M’ or ’G’ which makes GIMP interpret the
size as being specified in bytes, kilobytes, megabytes or gigabytes. If no suffix is specified the size
defaults to being specified in kilobytes.
-
-</dd>
-
-<dt>(toolbox-color-area yes)</dt>
-
-<dd>
-
-Show the current foreground and background colors in the toolbox. Possible values are yes and no.
-
-</dd>
-
-<dt>(toolbox-foo-area no)</dt>
-
-<dd>
-
-Show the currently selected brush, pattern and gradient in the toolbox. Possible values are yes and no.
-
-</dd>
-
-<dt>(toolbox-image-area no)</dt>
-
-<dd>
-
-Show the currently active image in the toolbox. Possible values are yes and no.
-
-</dd>
-
-<dt>(toolbox-wilber yes)</dt>
-
-<dd>
-
-Show the GIMP mascot at the top of the toolbox. Possible values are yes and no.
-
-</dd>
-
-<dt>(theme-path "${gimp_dir}/themes:${gimp_data_dir}/themes")</dt>
-
-<dd>
-
-Sets the theme search path. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(theme "Default")</dt>
-
-<dd>
-
-The name of the theme to use. This is a string value.
-
-</dd>
-
-<dt>(use-help yes)</dt>
-
-<dd>
-
-When enabled, pressing F1 will open the help browser. Possible values are yes and no.
-
-</dd>
-
-<dt>(show-help-button yes)</dt>
-
-<dd>
-
-When enabled, dialogs will show a help button that gives access to the related help page. Without this
button, the help page can still be reached by pressing F1\. Possible values are yes and no.
-
-</dd>
-
-<dt>(help-locales "")</dt>
-
-<dd>
-
-Specifies the language preferences used by the help system. This is a colon-separated list of language
identifiers with decreasing priority. If empty, the language is taken from the user’s locale setting. This is
a string value.
-
-</dd>
-
-<dt>(help-browser gimp)</dt>
-
-<dd>
-
-Sets the browser used by the help system. Possible values are gimp and web-browser.
-
-</dd>
-
-<dt>(web-browser "firefox %s")</dt>
-
-<dd>
-
-Sets the external web browser to be used. This can be an absolute path or the name of an executable to
search for in the user’s PATH. If the command contains ’%s’ it will be replaced with the URL, else the URL
will be appended to the command with a space separating the two. This is a single filename.
-
-</dd>
-
-<dt>(user-manual-online no)</dt>
-
-<dd>
-
-When enabled, the online user manual will be used by the help system. Otherwise the locally installed copy
is used. Possible values are yes and no.
-
-</dd>
-
-<dt>(user-manual-online-uri "http://docs.gimp.org/2.6")</dt>
-
-<dd>
-
-The location of the online user manual. This is used if ’user-manual-online’ is enabled. This is a string
value.
-
-</dd>
-
-<dt>(toolbox-window-hint utility)</dt>
-
-<dd>
-
-The window type hint that is set on the toolbox. This may affect how your window manager decorates and
handles the toolbox window. Possible values are normal, utility and keep-above.
-
-</dd>
-
-<dt>(dock-window-hint utility)</dt>
-
-<dd>
-
-The window type hint that is set on dock windows. This may affect the way your window manager decorates and
handles dock windows. Possible values are normal, utility and keep-above.
-
-</dd>
-
-<dt>(transient-docks no)</dt>
-
-<dd>
-
-When enabled, dock windows (the toolbox and palettes) are set to be transient to the active image window.
Most window managers will keep the dock windows above the image window then, but it may also have other
effects. Possible values are yes and no.
-
-</dd>
-
-<dt>(cursor-format pixbuf)</dt>
-
-<dd>
-
-Sets the pixel format to use for mouse pointers. Possible values are bitmap and pixbuf.
-
-</dd>
-
-<dt>(fractalexplorer-path "${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer")</dt>
-
-<dd>
-
-Where to search for fractals used by the Fractal Explorer plug-in. This is a colon-separated list of folders
to search.
-
-</dd>
-
-<dt>(gfig-path "${gimp_dir}/gfig:${gimp_data_dir}/gfig")</dt>
-
-<dd>
-
-Where to search for Gfig figures used by the Gfig plug-in. This is a colon-separated list of folders to
search.
-
-</dd>
-
-<dt>(gflare-path "${gimp_dir}/gflare:${gimp_data_dir}/gflare")</dt>
-
-<dd>
-
-Where to search for gflares used by the GFlare plug-in. This is a colon-separated list of folders to search.
-
-</dd>
-
-<dt>(gimpressionist-path "${gimp_dir}/gimpressionist:${gimp_data_dir}/gimpressionist")</dt>
-
-<dd>
-
-Where to search for data used by the Gimpressionist plug-in. This is a colon-separated list of folders to
search.
-
-</dd>
-
-<dt>(script-fu-path "${gimp_dir}/scripts:${gimp_data_dir}/scripts")</dt>
-
-<dd>
-
-This path will be searched for scripts when the Script-Fu plug-in is run. This is a colon-separated list of
folders to search.
-
-</dd>
-
-</dl>
-
-## [Path Expansion](#toc3)
-
-Strings of type PATH are expanded in a manner similar to [**bash**(1)](bash.html) . Specifically: tilde (~)
is expanded to the user’s home directory. Note that the bash feature of being able to refer to other user’s
home directories by writing ~userid/ is not valid in this file.
-
-${variable} is expanded to the current value of an environment variable. There are a few variables that are
pre-defined:
-
-<dl>
-
-<dt><em>gimp_dir</em></dt>
-
-<dd>The personal gimp directory which is set to the value of the environment variable GIMP2_DIRECTORY or to
~/.gimp-2.6\.</dd>
-
-<dt><em>gimp_data_dir</em></dt>
-
-<dd>Base for paths to shareable data, which is set to the value of the environment variable GIMP2_DATADIR or
to the compiled-in default value /usr/share/gimp/2.0\.</dd>
-
-<dt><em>gimp_plug_in_dir</em></dt>
-
-<dd>Base to paths for architecture-specific plugins and modules, which is set to the value of the
environment variable GIMP2_PLUGINDIR or to the compiled-in default value /usr/lib64/gimp/2.0\.</dd>
-
-<dt><em>gimp_sysconf_dir</em></dt>
-
-<dd>Path to configuration files, which is set to the value of the environment variable GIMP2_SYSCONFDIR or
to the compiled-in default value /etc/gimp/2.0\.</dd>
-
-</dl>
-
-## [Files](#toc4)
-
-<dl>
-
-<dt><em>/etc/gimp/2.0/gimprc</em></dt>
-
-<dd>System-wide configuration file</dd>
-
-<dt><em><strong>$HOME</strong>/.gimp-2.6/gimprc</em></dt>
-
-<dd>Per-user configuration file
-
-</dd>
-
-</dl>
-
-## [See Also](#toc5)
-
-[**gimp**(1)](gimp.html) , [**gimptool**(1)](gimptool.html) , [**gimp-remote**(1)](gimp-remote.html)
-
-* * *
-
-<a name="toc">**Table of Contents**</a>
-
-* [Name](#sect0)
-* [Description](#sect1)
-* [Properties](#sect2)
-* [Path Expansion](#sect3)
-* [Files](#sect4)
-* [See Also](#sect5)
+Title: gimprc Man Page
+Date: 2015-08-17T11:31:37-05:00
+Modified: 2015-08-17T11:31:42-05:00
+Authors: Pat David
+Status: hidden
+
+<style>
+dt {
+ font-family: monospace;
+}
+</style>
+
+[Table of Contents](#toc)
+
+## [Name](#toc0)
+
+gimprc - gimp configuration file
+
+## [Description](#toc1)
+
+The **gimprc** file is a configuration file read by GIMP when it starts up. There are two of these: one
system-wide one stored in /etc/gimp/2.0/gimprc and a per-user **$HOME**/.gimp-2.6/gimprc which may override
system settings.
+
+Comments are introduced by a hash sign (#), and continue until the end of the line. Blank lines are ignored.
+
+The **gimprc** file associates values with properties. These properties may be set by lisp-like assignments
of the form:
+
+<dl>
+
+<dt><em><strong>(property-name value)</strong></em></dt>
+
+<dt>where:</dt>
+
+<dt><em>property-name</em></dt>
+
+<dd>is one of the property names described below.</dd>
+
+<dt><em>value</em></dt>
+
+<dd>is the value the property is to be set to.</dd>
+
+</dl>
+
+Either spaces or tabs may be used to separate the name from the value.
+
+## [Properties](#toc2)
+
+Valid properties and their default values are:
+
+<dl>
+
+<dt>(temp-path "${gimp_dir}/tmp")</dt>
+
+<dd>
+
+Sets the folder for temporary storage. Files will appear here during the course of running GIMP. Most files
will disappear when GIMP exits, but some files are likely to remain, so it is best if this folder not be one
that is shared by other users. This is a single folder.
+
+</dd>
+
+<dt>(swap-path "${gimp_dir}")</dt>
+
+<dd>
+
+Sets the swap file location. GIMP uses a tile based memory allocation scheme. The swap file is used to
quickly and easily swap tiles out to disk and back in. Be aware that the swap file can easily get very large
if GIMP is used with large images. Also, things can get horribly slow if the swap file is created on a folder
that is mounted over NFS. For these reasons, it may be desirable to put your swap file in "/tmp". This is a
single folder.
+
+</dd>
+
+<dt>(num-processors 1)</dt>
+
+<dd>
+
+Sets how many processors GIMP should try to use simultaneously. This is an integer value.
+
+</dd>
+
+<dt>(tile-cache-size 1024M)</dt>
+
+<dd>
+
+When the amount of pixel data exceeds this limit, GIMP will start to swap tiles to disk. This is a lot
slower but it makes it possible to work on images that wouldn’t fit into memory otherwise. If you have a lot
of RAM, you may want to set this to a higher value. The integer size can contain a suffix of ’B’, ’K’, ’M’ or
’G’ which makes GIMP interpret the size as being specified in bytes, kilobytes, megabytes or gigabytes. If no
suffix is specified the size defaults to being specified in kilobytes.
+
+</dd>
+
+<dt>(interpolation-type cubic)</dt>
+
+<dd>
+
+Sets the level of interpolation used for scaling and other transformations. Possible values are none,
linear, cubic and lanczos.
+
+</dd>
+
+<dt>(plug-in-path "${gimp_dir}/plug-ins:${gimp_plug_in_dir}/plug-ins")</dt>
+
+<dd>
+
+Sets the plug-in search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(module-path "${gimp_dir}/modules:${gimp_plug_in_dir}/modules")</dt>
+
+<dd>
+
+Sets the module search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(interpreter-path "${gimp_dir}/interpreters:${gimp_plug_in_dir}/interpreters")</dt>
+
+<dd>
+
+Sets the interpreter search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(environ-path "${gimp_dir}/environ:${gimp_plug_in_dir}/environ")</dt>
+
+<dd>
+
+Sets the environ search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(brush-path "${gimp_dir}/brushes:${gimp_data_dir}/brushes")</dt>
+
+<dd>
+
+Sets the brush search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(brush-path-writable "${gimp_dir}/brushes")</dt>
+
+<dd>
+
+This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(pattern-path "${gimp_dir}/patterns:${gimp_data_dir}/patterns")</dt>
+
+<dd>
+
+Sets the pattern search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(pattern-path-writable "${gimp_dir}/patterns")</dt>
+
+<dd>
+
+This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(palette-path "${gimp_dir}/palettes:${gimp_data_dir}/palettes")</dt>
+
+<dd>
+
+Sets the palette search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(palette-path-writable "${gimp_dir}/palettes")</dt>
+
+<dd>
+
+This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(gradient-path "${gimp_dir}/gradients:${gimp_data_dir}/gradients")</dt>
+
+<dd>
+
+Sets the gradient search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(gradient-path-writable "${gimp_dir}/gradients")</dt>
+
+<dd>
+
+This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(font-path "${gimp_dir}/fonts:${gimp_data_dir}/fonts")</dt>
+
+<dd>
+
+Where to look for fonts in addition to the system-wide installed fonts. This is a colon-separated list of
folders to search.
+
+</dd>
+
+<dt>(default-brush "Circle (11)")</dt>
+
+<dd>
+
+Specify a default brush. The brush is searched for in the specified brush path. This is a string value.
+
+</dd>
+
+<dt>(default-pattern "Pine")</dt>
+
+<dd>
+
+Specify a default pattern. This is a string value.
+
+</dd>
+
+<dt>(default-palette "Default")</dt>
+
+<dd>
+
+Specify a default palette. This is a string value.
+
+</dd>
+
+<dt>(default-gradient "FG to BG (RGB)")</dt>
+
+<dd>
+
+Specify a default gradient. This is a string value.
+
+</dd>
+
+<dt>(default-font "Sans")</dt>
+
+<dd>
+
+Specify a default font. This is a string value.
+
+</dd>
+
+<dt>(global-brush yes)</dt>
+
+<dd>
+
+When enabled, the selected brush will be used for all tools. Possible values are yes and no.
+
+</dd>
+
+<dt>(global-pattern yes)</dt>
+
+<dd>
+
+When enabled, the selected pattern will be used for all tools. Possible values are yes and no.
+
+</dd>
+
+<dt>(global-palette yes)</dt>
+
+<dd>
+
+When enabled, the selected palette will be used for all tools. Possible values are yes and no.
+
+</dd>
+
+<dt>(global-gradient yes)</dt>
+
+<dd>
+
+When enabled, the selected gradient will be used for all tools. Possible values are yes and no.
+
+</dd>
+
+<dt>(global-font yes)</dt>
+
+<dd>
+
+When enabled, the selected font will be used for all tools. Possible values are yes and no.
+
+</dd>
+
+<dt>(default-image</dt>
+
+<dd>
+<pre style="font-size: 0.85rem;">
+ (width 640)
+ (height 400)
+ (unit pixels)
+ (xresolution 72.000000)
+ (yresolution 72.000000)
+ (resolution-unit inches)
+ (image-type rgb)
+ (fill-type background-fill)
+ (comment "Created with GIMP"))
+</pre>
+
+Sets the default image in the "File/New" dialog. This is a parameter list.
+
+</dd>
+
+<dt>(default-grid</dt>
+
+<dd><pre style="font-size: 0.85rem;">
+(style solid)
+ (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000))
+ (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000))
+ (xspacing 10.000000)
+ (yspacing 10.000000)
+ (spacing-unit inches)
+ (xoffset 0.000000)
+ (yoffset 0.000000)
+ (offset-unit inches))
+</pre>
+
+Specify a default image grid. This is a parameter list.
+
+</dd>
+
+<dt>(undo-levels 5)</dt>
+
+<dd>
+
+Sets the minimal number of operations that can be undone. More undo levels are kept available until the
undo-size limit is reached. This is an integer value.
+
+</dd>
+
+<dt>(undo-size 64M)</dt>
+
+<dd>
+
+Sets an upper limit to the memory that is used per image to keep operations on the undo stack. Regardless of
this setting, at least as many undo-levels as configured can be undone. The integer size can contain a suffix
of ’B’, ’K’, ’M’ or ’G’ which makes GIMP interpret the size as being specified in bytes, kilobytes, megabytes
or gigabytes. If no suffix is specified the size defaults to being specified in kilobytes.
+
+</dd>
+
+<dt>(undo-preview-size large)</dt>
+
+<dd>
+
+Sets the size of the previews in the Undo History. Possible values are tiny, extra-small, small, medium,
large, extra-large, huge, enormous and gigantic.
+
+</dd>
+
+<dt>(plug-in-history-size 10)</dt>
+
+<dd>
+
+How many recently used plug-ins to keep on the Filters menu. This is an integer value.
+
+</dd>
+
+<dt>(pluginrc-path "${gimp_dir}/pluginrc")</dt>
+
+<dd>
+
+Sets the pluginrc search path. This is a single filename.
+
+</dd>
+
+<dt>(layer-previews yes)</dt>
+
+<dd>
+
+Sets whether GIMP should create previews of layers and channels. Previews in the layers and channels dialog
are nice to have but they can slow things down when working with large images. Possible values are yes and no.
+
+</dd>
+
+<dt>(layer-preview-size medium)</dt>
+
+<dd>
+
+Sets the preview size used for layers and channel previews in newly created dialogs. Possible values are
tiny, extra-small, small, medium, large, extra-large, huge, enormous and gigantic.
+
+</dd>
+
+<dt>(thumbnail-size normal)</dt>
+
+<dd>
+
+Sets the size of the thumbnail shown in the Open dialog. Possible values are none, normal and large.
+
+</dd>
+
+<dt>(thumbnail-filesize-limit 4M)</dt>
+
+<dd>
+
+The thumbnail in the Open dialog will be automatically updated if the file being previewed is smaller than
the size set here. The integer size can contain a suffix of ’B’, ’K’, ’M’ or ’G’ which makes GIMP interpret
the size as being specified in bytes, kilobytes, megabytes or gigabytes. If no suffix is specified the size
defaults to being specified in kilobytes.
+
+</dd>
+
+<dt>(install-colormap no)</dt>
+
+<dd>
+
+Install a private colormap; might be useful on 8-bit (256 colors) displays. Possible values are yes and no.
+
+</dd>
+
+<dt>(min-colors 144)</dt>
+
+<dd>
+
+Generally only a concern for 8-bit displays, this sets the minimum number of system colors allocated for
GIMP. This is an integer value.
+
+</dd>
+
+<dt>(color-management</dt>
+
+<dd><pre style="font-size:0.85rem;">
+(mode display)
+ (display-profile-from-gdk no)
+ (display-rendering-intent perceptual)
+ (simulation-rendering-intent perceptual)
+ (simulation-gamut-check no)
+ (out-of-gamut-color (color-rgb 0.501961 0.501961 0.501961))
+ (display-module "CdisplayLcms"))
+</pre>
+
+Defines the color management behavior. This is a parameter list.
+
+</dd>
+
+<dt>(color-profile-policy ask)</dt>
+
+<dd>
+
+How to handle embedded color profiles when opening a file. Possible values are ask, keep and convert.
+
+</dd>
+
+<dt>(save-document-history yes)</dt>
+
+<dd>
+
+Keep a permanent record of all opened and saved files in the Recent Documents list. Possible values are yes
and no.
+
+</dd>
+
+<dt>(transparency-size medium-checks)</dt>
+
+<dd>
+
+Sets the size of the checkerboard used to display transparency. Possible values are small-checks,
medium-checks and large-checks.
+
+</dd>
+
+<dt>(transparency-type gray-checks)</dt>
+
+<dd>
+
+Sets the manner in which transparency is displayed in images. Possible values are light-checks, gray-checks,
dark-checks, white-only, gray-only and black-only.
+
+</dd>
+
+<dt>(snap-distance 8)</dt>
+
+<dd>
+
+This is the distance in pixels where Guide and Grid snapping activates. This is an integer value.
+
+</dd>
+
+<dt>(marching-ants-speed 200)</dt>
+
+<dd>
+
+Speed of marching ants in the selection outline. This value is in milliseconds (less time indicates faster
marching). This is an integer value.
+
+</dd>
+
+<dt>(resize-windows-on-zoom no)</dt>
+
+<dd>
+
+When enabled, the image window will automatically resize itself when zooming into and out of images.
Possible values are yes and no.
+
+</dd>
+
+<dt>(resize-windows-on-resize no)</dt>
+
+<dd>
+
+When enabled, the image window will automatically resize itself whenever the physical image size changes.
Possible values are yes and no.
+
+</dd>
+
+<dt>(default-dot-for-dot yes)</dt>
+
+<dd>
+
+When enabled, this will ensure that each pixel of an image gets mapped to a pixel on the screen. Possible
values are yes and no.
+
+</dd>
+
+<dt>(initial-zoom-to-fit yes)</dt>
+
+<dd>
+
+When enabled, this will ensure that the full image is visible after a file is opened, otherwise it will be
displayed with a scale of 1:1\. Possible values are yes and no.
+
+</dd>
+
+<dt>(perfect-mouse yes)</dt>
+
+<dd>
+
+When enabled, the X server is queried for the mouse’s current position on each motion event, rather than
relying on the position hint. This means painting with large brushes should be more accurate, but it may be
slower. Perversely, on some X servers enabling this option results in faster painting. Possible values are
yes and no.
+
+</dd>
+
+<dt>(cursor-mode tool-icon)</dt>
+
+<dd>
+
+Sets the type of mouse pointers to use. Possible values are tool-icon, tool-crosshair and crosshair.
+
+</dd>
+
+<dt>(cursor-updating yes)</dt>
+
+<dd>
+
+Context-dependent mouse pointers are helpful. They are enabled by default. However, they require overhead
that you may want to do without. Possible values are yes and no.
+
+</dd>
+
+<dt>(show-brush-outline yes)</dt>
+
+<dd>
+
+When enabled, all paint tools will show a preview of the current brush’s outline. Possible values are yes
and no.
+
+</dd>
+
+<dt>(show-paint-tool-cursor yes)</dt>
+
+<dd>
+
+When enabled, the mouse pointer will be shown over the image while using a paint tool. Possible values are
yes and no.
+
+</dd>
+
+<dt>(image-title-format "%D*%f-%p.%i (%t, %L) %wx%h")</dt>
+
+<dd>
+
+Sets the text to appear in image window titles. This is a format string; certain % character sequences are
recognised and expanded as follows:
+
+<pre style="font-size: 0.85rem;">
+ %% literal percent sign
+ %f bare filename, or "Untitled"
+ %F full path to file, or "Untitled"
+ %p PDB image id
+ %i view instance number
+ %t image type (RGB, grayscale, indexed)
+ %z zoom factor as a percentage
+ %s source scale factor
+ %d destination scale factor
+ %Dx expands to x if the image is dirty, the empty string otherwise
+ %Cx expands to x if the image is clean, the empty string otherwise
+ %B expands to (modified) if the image is dirty, the empty string otherwise
+ %A expands to (clean) if the image is clean, the empty string otherwise
+ %l the number of layers
+ %L the number of layers (long form)
+ %m memory used by the image
+ %n the name of the active layer/channel
+ %P the PDB id of the active layer/channel
+ %w image width in pixels
+ %W image width in real-world units
+ %h image height in pixels
+ %H image height in real-world units
+ %u unit symbol
+ %U unit abbreviation
+
+</pre>
+</dd>
+
+<dt>(image-status-format "%n (%m)")</dt>
+
+<dd>
+
+Sets the text to appear in image window status bars. This is a format string; certain % character sequences
are recognised and expanded as follows:
+
+<pre style="font-size:0.85rem;">
+%% literal percent sign
+%f bare filename, or "Untitled"
+%F full path to file, or "Untitled"
+%p PDB image id
+%i view instance number
+%t image type (RGB, grayscale, indexed)
+%z zoom factor as a percentage
+%s source scale factor
+%d destination scale factor
+%Dx expands to x if the image is dirty, the empty string otherwise
+%Cx expands to x if the image is clean, the empty string otherwise
+%B expands to (modified) if the image is dirty, the empty string otherwise
+%A expands to (clean) if the image is clean, the empty string otherwise
+%l the number of layers
+%L the number of layers (long form)
+%m memory used by the image
+%n the name of the active layer/channel
+%P the PDB id of the active layer/channel
+%w image width in pixels
+%W image width in real-world units
+%h image height in pixels
+%H image height in real-world units
+%u unit symbol
+%U unit abbreviation
+</pre>
+
+</dd>
+
+<dt>(confirm-on-close yes)</dt>
+
+<dd>
+
+Ask for confirmation before closing an image without saving. Possible values are yes and no.
+
+</dd>
+
+<dt>(monitor-xresolution 96.000000)</dt>
+
+<dd>
+
+Sets the monitor’s horizontal resolution, in dots per inch. If set to 0, forces the X server to be queried
for both horizontal and vertical resolution information. This is a float value.
+
+</dd>
+
+<dt>(monitor-yresolution 96.000000)</dt>
+
+<dd>
+
+Sets the monitor’s vertical resolution, in dots per inch. If set to 0, forces the X server to be queried for
both horizontal and vertical resolution information. This is a float value.
+
+</dd>
+
+<dt>(monitor-resolution-from-windowing-system yes)</dt>
+
+<dd>
+
+When enabled, GIMP will use the monitor resolution from the windowing system. Possible values are yes and no.
+
+</dd>
+
+<dt>(navigation-preview-size medium)</dt>
+
+<dd>
+
+Sets the size of the navigation preview available in the lower right corner of the image window. Possible
values are tiny, extra-small, small, medium, large, extra-large, huge, enormous and gigantic.
+
+</dd>
+
+<dt>(default-view</dt>
+
+<dd>
+<pre style="font-size: 0.85rem;">
+(show-menubar yes)
+ (show-rulers yes)
+ (show-scrollbars yes)
+ (show-statusbar yes)
+ (show-selection yes)
+ (show-layer-boundary yes)
+ (show-guides yes)
+ (show-grid no)
+ (show-sample-points yes)
+ (padding-mode default)
+ (padding-color (color-rgb 1.000000 1.000000 1.000000)))
+</pre>
+
+Sets the default settings for the image view. This is a parameter list.
+
+</dd>
+
+<dt>(default-fullscreen-view</dt>
+
+<dd>
+<pre style="font-size: 0.85rem;">>
+(show-menubar yes)
+ (show-rulers yes)
+ (show-scrollbars yes)
+ (show-statusbar yes)
+ (show-selection yes)
+ (show-layer-boundary yes)
+ (show-guides yes)
+ (show-grid no)
+ (show-sample-points yes)
+ (padding-mode default)
+ (padding-color (color-rgb 1.000000 1.000000 1.000000)))
+</pre>
+
+Sets the default settings used when an image is viewed in fullscreen mode. This is a parameter list.
+
+</dd>
+
+<dt>(activate-on-focus yes)</dt>
+
+<dd>
+
+When enabled, an image will become the active image when its image window receives the focus. This is useful
for window managers using "click to focus". Possible values are yes and no.
+
+</dd>
+
+<dt>(space-bar-action pan)</dt>
+
+<dd>
+
+What to do when the space bar is pressed in the image window. Possible values are none, pan and move.
+
+</dd>
+
+<dt>(xor-color (color-rgb 0.501961 1.000000 0.501961))</dt>
+
+<dd>
+
+Sets the color that is used for XOR drawing. This setting only exists as a workaround for buggy display
drivers. If lines on the canvas are not correctly undrawn, try to set this to white. The color is specified
in the form (color-rgb red green blue) with channel values as floats in the range of 0.0 to 1.0\.
+
+</dd>
+
+<dt>(zoom-quality high)</dt>
+
+<dd>
+
+There’s a tradeoff between speed and quality of the zoomed-out display. Possible values are low and high.
+
+</dd>
+
+<dt>(default-threshold 15)</dt>
+
+<dd>
+
+Tools such as fuzzy-select and bucket fill find regions based on a seed-fill algorithm. The seed fill starts
at the initially selected pixel and progresses in all directions until the difference of pixel intensity from
the original is greater than a specified threshold. This value represents the default threshold. This is an
integer value.
+
+</dd>
+
+<dt>(move-tool-changes-active no)</dt>
+
+<dd>
+
+If enabled, the move tool sets the edited layer or path as active. This used to be the default behaviour in
older versions. Possible values are yes and no.
+
+</dd>
+
+<dt>(trust-dirty-flag yes)</dt>
+
+<dd>
+
+When enabled, GIMP will not save an image if it has not been changed since it was opened. Possible values
are yes and no.
+
+</dd>
+
+<dt>(save-device-status no)</dt>
+
+<dd>
+
+Remember the current tool, pattern, color, and brush across GIMP sessions. Possible values are yes and no.
+
+</dd>
+
+<dt>(save-session-info yes)</dt>
+
+<dd>
+
+Save the positions and sizes of the main dialogs when GIMP exits. Possible values are yes and no.
+
+</dd>
+
+<dt>(restore-session yes)</dt>
+
+<dd>
+
+Let GIMP try to restore your last saved session on each startup. Possible values are yes and no.
+
+</dd>
+
+<dt>(save-tool-options no)</dt>
+
+<dd>
+
+Save the tool options when GIMP exits. Possible values are yes and no.
+
+</dd>
+
+<dt>(show-tooltips yes)</dt>
+
+<dd>
+
+Show a tooltip when the pointer hovers over an item. Possible values are yes and no.
+
+</dd>
+
+<dt>(tearoff-menus yes)</dt>
+
+<dd>
+
+When enabled, menus can be torn off. Possible values are yes and no.
+
+</dd>
+
+<dt>(can-change-accels no)</dt>
+
+<dd>
+
+When enabled, you can change keyboard shortcuts for menu items by hitting a key combination while the menu
item is highlighted. Possible values are yes and no.
+
+</dd>
+
+<dt>(save-accels yes)</dt>
+
+<dd>
+
+Save changed keyboard shortcuts when GIMP exits. Possible values are yes and no.
+
+</dd>
+
+<dt>(restore-accels yes)</dt>
+
+<dd>
+
+Restore saved keyboard shortcuts on each GIMP startup. Possible values are yes and no.
+
+</dd>
+
+<dt>(menu-mnemonics yes)</dt>
+
+<dd>
+
+When enabled, GIMP will show mnemonics in menus. Possible values are yes and no.
+
+</dd>
+
+<dt>(last-opened-size 10)</dt>
+
+<dd>
+
+How many recently opened image filenames to keep on the File menu. This is an integer value.
+
+</dd>
+
+<dt>(max-new-image-size 128M)</dt>
+
+<dd>
+
+GIMP will warn the user if an attempt is made to create an image that would take more memory than the size
specified here. The integer size can contain a suffix of ’B’, ’K’, ’M’ or ’G’ which makes GIMP interpret the
size as being specified in bytes, kilobytes, megabytes or gigabytes. If no suffix is specified the size
defaults to being specified in kilobytes.
+
+</dd>
+
+<dt>(toolbox-color-area yes)</dt>
+
+<dd>
+
+Show the current foreground and background colors in the toolbox. Possible values are yes and no.
+
+</dd>
+
+<dt>(toolbox-foo-area no)</dt>
+
+<dd>
+
+Show the currently selected brush, pattern and gradient in the toolbox. Possible values are yes and no.
+
+</dd>
+
+<dt>(toolbox-image-area no)</dt>
+
+<dd>
+
+Show the currently active image in the toolbox. Possible values are yes and no.
+
+</dd>
+
+<dt>(toolbox-wilber yes)</dt>
+
+<dd>
+
+Show the GIMP mascot at the top of the toolbox. Possible values are yes and no.
+
+</dd>
+
+<dt>(theme-path "${gimp_dir}/themes:${gimp_data_dir}/themes")</dt>
+
+<dd>
+
+Sets the theme search path. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(theme "Default")</dt>
+
+<dd>
+
+The name of the theme to use. This is a string value.
+
+</dd>
+
+<dt>(use-help yes)</dt>
+
+<dd>
+
+When enabled, pressing F1 will open the help browser. Possible values are yes and no.
+
+</dd>
+
+<dt>(show-help-button yes)</dt>
+
+<dd>
+
+When enabled, dialogs will show a help button that gives access to the related help page. Without this
button, the help page can still be reached by pressing F1\. Possible values are yes and no.
+
+</dd>
+
+<dt>(help-locales "")</dt>
+
+<dd>
+
+Specifies the language preferences used by the help system. This is a colon-separated list of language
identifiers with decreasing priority. If empty, the language is taken from the user’s locale setting. This is
a string value.
+
+</dd>
+
+<dt>(help-browser gimp)</dt>
+
+<dd>
+
+Sets the browser used by the help system. Possible values are gimp and web-browser.
+
+</dd>
+
+<dt>(web-browser "firefox %s")</dt>
+
+<dd>
+
+Sets the external web browser to be used. This can be an absolute path or the name of an executable to
search for in the user’s PATH. If the command contains ’%s’ it will be replaced with the URL, else the URL
will be appended to the command with a space separating the two. This is a single filename.
+
+</dd>
+
+<dt>(user-manual-online no)</dt>
+
+<dd>
+
+When enabled, the online user manual will be used by the help system. Otherwise the locally installed copy
is used. Possible values are yes and no.
+
+</dd>
+
+<dt>(user-manual-online-uri "http://docs.gimp.org/2.6")</dt>
+
+<dd>
+
+The location of the online user manual. This is used if ’user-manual-online’ is enabled. This is a string
value.
+
+</dd>
+
+<dt>(toolbox-window-hint utility)</dt>
+
+<dd>
+
+The window type hint that is set on the toolbox. This may affect how your window manager decorates and
handles the toolbox window. Possible values are normal, utility and keep-above.
+
+</dd>
+
+<dt>(dock-window-hint utility)</dt>
+
+<dd>
+
+The window type hint that is set on dock windows. This may affect the way your window manager decorates and
handles dock windows. Possible values are normal, utility and keep-above.
+
+</dd>
+
+<dt>(transient-docks no)</dt>
+
+<dd>
+
+When enabled, dock windows (the toolbox and palettes) are set to be transient to the active image window.
Most window managers will keep the dock windows above the image window then, but it may also have other
effects. Possible values are yes and no.
+
+</dd>
+
+<dt>(cursor-format pixbuf)</dt>
+
+<dd>
+
+Sets the pixel format to use for mouse pointers. Possible values are bitmap and pixbuf.
+
+</dd>
+
+<dt>(fractalexplorer-path "${gimp_dir}/fractalexplorer:${gimp_data_dir}/fractalexplorer")</dt>
+
+<dd>
+
+Where to search for fractals used by the Fractal Explorer plug-in. This is a colon-separated list of folders
to search.
+
+</dd>
+
+<dt>(gfig-path "${gimp_dir}/gfig:${gimp_data_dir}/gfig")</dt>
+
+<dd>
+
+Where to search for Gfig figures used by the Gfig plug-in. This is a colon-separated list of folders to
search.
+
+</dd>
+
+<dt>(gflare-path "${gimp_dir}/gflare:${gimp_data_dir}/gflare")</dt>
+
+<dd>
+
+Where to search for gflares used by the GFlare plug-in. This is a colon-separated list of folders to search.
+
+</dd>
+
+<dt>(gimpressionist-path "${gimp_dir}/gimpressionist:${gimp_data_dir}/gimpressionist")</dt>
+
+<dd>
+
+Where to search for data used by the Gimpressionist plug-in. This is a colon-separated list of folders to
search.
+
+</dd>
+
+<dt>(script-fu-path "${gimp_dir}/scripts:${gimp_data_dir}/scripts")</dt>
+
+<dd>
+
+This path will be searched for scripts when the Script-Fu plug-in is run. This is a colon-separated list of
folders to search.
+
+</dd>
+
+</dl>
+
+## [Path Expansion](#toc3)
+
+Strings of type PATH are expanded in a manner similar to [**bash**(1)](bash.html) . Specifically: tilde (~)
is expanded to the user’s home directory. Note that the bash feature of being able to refer to other user’s
home directories by writing ~userid/ is not valid in this file.
+
+${variable} is expanded to the current value of an environment variable. There are a few variables that are
pre-defined:
+
+<dl>
+
+<dt><em>gimp_dir</em></dt>
+
+<dd>The personal gimp directory which is set to the value of the environment variable GIMP2_DIRECTORY or to
~/.gimp-2.6\.</dd>
+
+<dt><em>gimp_data_dir</em></dt>
+
+<dd>Base for paths to shareable data, which is set to the value of the environment variable GIMP2_DATADIR or
to the compiled-in default value /usr/share/gimp/2.0\.</dd>
+
+<dt><em>gimp_plug_in_dir</em></dt>
+
+<dd>Base to paths for architecture-specific plugins and modules, which is set to the value of the
environment variable GIMP2_PLUGINDIR or to the compiled-in default value /usr/lib64/gimp/2.0\.</dd>
+
+<dt><em>gimp_sysconf_dir</em></dt>
+
+<dd>Path to configuration files, which is set to the value of the environment variable GIMP2_SYSCONFDIR or
to the compiled-in default value /etc/gimp/2.0\.</dd>
+
+</dl>
+
+## [Files](#toc4)
+
+<dl>
+
+<dt><em>/etc/gimp/2.0/gimprc</em></dt>
+
+<dd>System-wide configuration file</dd>
+
+<dt><em><strong>$HOME</strong>/.gimp-2.6/gimprc</em></dt>
+
+<dd>Per-user configuration file
+
+</dd>
+
+</dl>
+
+## [See Also](#toc5)
+
+[**gimp**(1)](gimp.html) , [**gimptool**(1)](gimptool.html) , [**gimp-remote**(1)](gimp-remote.html)
+
+* * *
+
+<a name="toc">**Table of Contents**</a>
+
+* [Name](#sect0)
+* [Description](#sect1)
+* [Properties](#sect2)
+* [Path Expansion](#sect3)
+* [Files](#sect4)
+* [See Also](#sect5)
diff --git a/content/man/gimptool.md b/content/man/gimptool.md
index 13c335f..8dee1ae 100644
--- a/content/man/gimptool.md
+++ b/content/man/gimptool.md
@@ -1,261 +1,261 @@
-Title: gimptool Man Page
-Date: 2015-08-17T11:31:37-05:00
-Modified: 2015-08-17T11:31:42-05:00
-Authors: Pat David
-Status: hidden
-
-<style>
-dt {
- font-family: monospace;
-}
-</style>
-
-[Table of Contents](#toc)
-
-## [Name](#toc0)
-
-gimptool-2.0 - script to perform various GIMPy functions
-
-## [Synopsis](#toc1)
-
-<span style="font-family: monospace;" markdown="1">
-**gimptool‑2.0** [‑‑prefix_[=DIR]_] [‑‑exec‑prefix_[=DIR]_]
[‑‑version] [‑‑help] [‑‑quiet] [‑‑silent] [‑n]
[‑‑just‑print] [‑‑dry‑run] [‑‑recon]
[‑‑msvc‑syntax] [‑‑bindir] [‑‑sbindir] [‑‑libexecdir]
[‑‑datadir] [‑‑sysconfdir] [‑‑sharedstatedir]
[‑‑localstatedir] [‑‑libdir] [‑‑infodir] [‑‑mandir]
[‑‑includedir] [‑‑gimpplugindir] [‑‑gimpdatadir] [‑‑libs]
[‑‑libs‑noui] [‑‑cflags] [‑‑cflags‑noi]
[‑‑build _plug‑in.c_] [‑‑build‑strip _plug‑in.c_]
[‑‑install _plug‑in.c_] [‑‑install‑strip _plug‑in.c_]
[‑‑
install‑admin _plug‑in.c_] [‑‑install‑bin _plug‑in_]
[‑‑install‑admin‑strip _plug‑in.c_]
[‑‑install‑bin‑strip _plug‑in_]
[‑‑install‑admin‑bin _plug‑in_]
[‑‑install‑script _script.scm_]
[‑‑install‑admin‑script _script.scm_]
[‑‑uninstall‑bin _plug‑in_]
[‑‑uninstall‑admin‑bin _plug‑in_]
[‑‑uninstall‑script _script.scm_]
[‑‑uninstall‑admin‑script _script.scm_]
-</span>
-
-## [Description](#toc2)
-
-<em>gimptool-2.0</em> is a tool that can, among other things, build plug-ins or scripts and install them if
they are distributed in one source file.
-
-<em>gimptool-2.0</em> can also be used by programs that need to know what libraries and include-paths
<em>GIMP</em> was compiled with. <em>gimptool-2.0</em> uses _pkg-config_ for this task. For use in Makefiles,
it is recommended that you use _pkg-config_ directly instead of calling <em>gimptool-2.0</em>.
-
-## [Options](#toc3)
-
-<em>gimptool-2.0</em> accepts the following options:
-
-<dl>
-
-<dt>--version</dt>
-
-<dd>Print the currently installed version of <em>GIMP</em> on the standard output.</dd>
-
-<dt>--help</dt>
-
-<dd>Print out the help blurb, showing commonly used commandline options.</dd>
-
-<dt>--quiet</dt>
-
-<dd>Run quietly without echoing any of the build commands.</dd>
-
-<dt>--silent</dt>
-
-<dd>Run silently without echoing any of the build commands. Same as --quiet.</dd>
-
-<dt>-n</dt>
-
-<dd>Test mode. Print the commands but don’t actually execute them. Useful for making dry runs for
testing.</dd>
-
-<dt>--just-print</dt>
-
-<dd>Test mode. Print the commands but don’t actually execute them. Same as -n.</dd>
-
-<dt>--dry-run</dt>
-
-<dd>Test mode. Print the commands but don’t actually execute them. Same as -n.</dd>
-
-<dt>--recon</dt>
-
-<dd>Test mode. Print the commands but don’t actually execute them. Same as -n.</dd>
-
-<dt>--msvc-syntax</dt>
-
-<dd>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 <em>gimptool-2.0</em>’s work.</dd>
-
-<dt>--bindir</dt>
-
-<dd>Outputs the bindir used to install the <em>GIMP</em>.</dd>
-
-<dt>--sbindir</dt>
-
-<dd>Outputs the sbindir used to install the <em>GIMP</em>.</dd>
-
-<dt>--libexecdir</dt>
-
-<dd>Outputs the libexecdir used to install the <em>GIMP</em>.</dd>
-
-<dt>--datadir</dt>
-
-<dd>Outputs the datadir used to install the <em>GIMP</em>.</dd>
-
-<dt>--sysconfdir</dt>
-
-<dd>Outputs the sysconfdir used to install the <em>GIMP</em>.</dd>
-
-<dt>--sharedstatedir</dt>
-
-<dd>Outputs the sharedstatedir used to install the <em>GIMP</em>.</dd>
-
-<dt>--localstatedir</dt>
-
-<dd>Outputs the localstatedir used to install the <em>GIMP</em>.</dd>
-
-<dt>--libdir</dt>
-
-<dd>Outputs the libdir used to install the <em>GIMP</em>.</dd>
-
-<dt>--infodir</dt>
-
-<dd>Outputs the infodir used to install the <em>GIMP</em>.</dd>
-
-<dt>--mandir</dt>
-
-<dd>Outputs the mandir used to install the <em>GIMP</em>.</dd>
-
-<dt>--includedir</dt>
-
-<dd>Outputs the includedir used to install the <em>GIMP</em>.</dd>
-
-<dt>--gimpdatadir</dt>
-
-<dd>Outputs the actual directory where the <em>GIMP</em> data files were installed.</dd>
-
-<dt>--gimpplugindir</dt>
-
-<dd>Outputs the actual directory where the <em>GIMP</em> plug-ins were installed.</dd>
-
-<dt>--build <em>plug-in.c</em></dt>
-
-<dd>Compile and link <em>plug-in.c</em> into a <em>GIMP</em> plug-in.</dd>
-
-<dt>--build-strip <em>plug-in.c</em></dt>
-
-<dd>Compile,link, and strip <em>plug-in.c</em> into a <em>GIMP</em> plug-in.</dd>
-
-<dt>--install <em>plug-in.c</em></dt>
-
-<dd>Compile, link, and install <em>plug-in.c</em> into the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
-
-<dt>--install-strip <em>plug-in.c</em></dt>
-
-<dd>Compile, link,strip, and install <em>plug-in.c</em> into the user’s personal <em>GIMP</em> plug-in
directory (<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
-
-<dt>--install-admin <em>plug-in.c</em></dt>
-
-<dd>Compile, link, and install <em>plug-in.c</em> into the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
-
-<dt>--install-bin <em>plug-in</em></dt>
-
-<dd>Install <em>plug-in</em> into the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
-
-<dt>--install-admin-bin <em>plug-in</em></dt>
-
-<dd>Install <em>plug-in</em> into the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
-
-<dt>--install-bin-strip <em>plug-in</em></dt>
-
-<dd>Install stripped <em>plug-in</em> into the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
-
-<dt>--install-admin-bin-strip <em>plug-in</em></dt>
-
-<dd>Install stripped <em>plug-in</em> into the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
-
-<dt>--install-script <em>script.scm</em></dt>
-
-<dd>Install <em>script.scm</em> into the user’s personal <em>GIMP</em> script directory
(<strong>$HOME</strong>/.gimp-2.6/scripts)</dd>
-
-<dt>--install-admin-script <em>script.scm</em></dt>
-
-<dd>Install <em>script.scm</em> into the system-wide <em>GIMP</em> script directory
(/usr/share/gimp/2.0/scripts)</dd>
-
-<dt>--uninstall-bin <em>plug-in</em></dt>
-
-<dd>Uninstall <em>plug-in</em> from the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
-
-<dt>--uninstall-admin-bin <em>plug-in</em></dt>
-
-<dd>Uninstall <em>plug-in</em> from the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
-
-<dt>--uninstall-script <em>script.scm</em></dt>
-
-<dd>Uninstall <em>script.scm</em> from the user’s personal <em>GIMP</em> script directory
(<strong>$HOME</strong>/.gimp-2.6/scripts)</dd>
-
-<dt>--uninstall-admin-script <em>script.scm</em></dt>
-
-<dd>Uninstall <em>script.scm</em> from the system-wide <em>GIMP</em> script directory
(/usr/share/gimp/2.0/scripts)</dd>
-
-<dt>--libs</dt>
-
-<dd>Print the linker flags that are necessary to link a <em>GIMP</em> plug-in.</dd>
-
-<dt>--libs-noui</dt>
-
-<dd>Print the linker flags that are necessary to link a <em>GIMP</em> plug-in, for plug-ins that do not
require the GTK+ libraries.</dd>
-
-<dt>--cflags</dt>
-
-<dd>Print the compiler flags that are necessary to compile a <em>GIMP</em> plug-in.</dd>
-
-<dt>--clags-noui</dt>
-
-<dd>Print the compiler flags that are necessary to compile a <em>GIMP</em> plug-in for plug-ins that do not
require the GTK+ libraries.</dd>
-
-<dt>--prefix=PREFIX</dt>
-
-<dd>If specified, use PREFIX instead of the installation prefix that <em>GIMP</em> 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.</dd>
-
-<dt>--exec-prefix=PREFIX</dt>
-
-<dd>If specified, use PREFIX instead of the installation exec prefix that <em>GIMP</em> was built with when
computing the output for the --cflags and --libs options. This option must be specified before any --libs or
--cflags options.</dd>
-
-</dl>
-
-## [Environment](#toc4)
-
-<dl>
-
-<dt>CC</dt>
-
-<dd>to get the name of the desired C compiler.</dd>
-
-<dt>CFLAGS</dt>
-
-<dd>to get the preferred flags to pass to the C compiler for plug-in building.</dd>
-
-<dt>DESTDIR</dt>
-
-<dd>to add a prefix to the install/uninstall path.</dd>
-
-<dt>LDFLAGS</dt>
-
-<dd>to get the preferred flags for passing to the linker.</dd>
-
-<dt>LIBS</dt>
-
-<dd>for passing extra libs that may be needed in the build process. For example, LIBS=-lintl .</dd>
-
-<dt>PKG_CONFIG</dt>
-
-<dd>to get the location of the <em>pkg-config</em> program that is used to determine details about your
glib, pango, gtk+ and gimp installation.</dd>
-
-</dl>
-
-## [See Also](#toc5)
-
-[**gimp**(1)](gimp.html) , [**gimprc**(5)](gimprc.html) , [**pkg-config**(1)](pkg-config.html)
-
-## [Authors](#toc6)
-
-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>).
-
-* * *
-
-<a name="toc">Table of Contents</a>
-
-* [Name](#sect0)
-* [Synopsis](#sect1)
-* [Description](#sect2)
-* [Options](#sect3)
-* [Environment](#sect4)
-* [See Also](#sect5)
-* [Authors](#sect6)
+Title: gimptool Man Page
+Date: 2015-08-17T11:31:37-05:00
+Modified: 2015-08-17T11:31:42-05:00
+Authors: Pat David
+Status: hidden
+
+<style>
+dt {
+ font-family: monospace;
+}
+</style>
+
+[Table of Contents](#toc)
+
+## [Name](#toc0)
+
+gimptool-2.0 - script to perform various GIMPy functions
+
+## [Synopsis](#toc1)
+
+<span style="font-family: monospace;" markdown="1">
+**gimptool‑2.0** [‑‑prefix_[=DIR]_] [‑‑exec‑prefix_[=DIR]_]
[‑‑version] [‑‑help] [‑‑quiet] [‑‑silent] [‑n]
[‑‑just‑print] [‑‑dry‑run] [‑‑recon]
[‑‑msvc‑syntax] [‑‑bindir] [‑‑sbindir] [‑‑libexecdir]
[‑‑datadir] [‑‑sysconfdir] [‑‑sharedstatedir]
[‑‑localstatedir] [‑‑libdir] [‑‑infodir] [‑‑mandir]
[‑‑includedir] [‑‑gimpplugindir] [‑‑gimpdatadir] [‑‑libs]
[‑‑libs‑noui] [‑‑cflags] [‑‑cflags‑noi]
[‑‑build _plug‑in.c_] [‑‑build‑strip _plug‑in.c_]
[‑‑install _plug‑in.c_] [‑‑install‑strip _plug‑in.c_]
[‑‑
install‑admin _plug‑in.c_] [‑‑install‑bin _plug‑in_]
[‑‑install‑admin‑strip _plug‑in.c_]
[‑‑install‑bin‑strip _plug‑in_]
[‑‑install‑admin‑bin _plug‑in_]
[‑‑install‑script _script.scm_]
[‑‑install‑admin‑script _script.scm_]
[‑‑uninstall‑bin _plug‑in_]
[‑‑uninstall‑admin‑bin _plug‑in_]
[‑‑uninstall‑script _script.scm_]
[‑‑uninstall‑admin‑script _script.scm_]
+</span>
+
+## [Description](#toc2)
+
+<em>gimptool-2.0</em> is a tool that can, among other things, build plug-ins or scripts and install them if
they are distributed in one source file.
+
+<em>gimptool-2.0</em> can also be used by programs that need to know what libraries and include-paths
<em>GIMP</em> was compiled with. <em>gimptool-2.0</em> uses _pkg-config_ for this task. For use in Makefiles,
it is recommended that you use _pkg-config_ directly instead of calling <em>gimptool-2.0</em>.
+
+## [Options](#toc3)
+
+<em>gimptool-2.0</em> accepts the following options:
+
+<dl>
+
+<dt>--version</dt>
+
+<dd>Print the currently installed version of <em>GIMP</em> on the standard output.</dd>
+
+<dt>--help</dt>
+
+<dd>Print out the help blurb, showing commonly used commandline options.</dd>
+
+<dt>--quiet</dt>
+
+<dd>Run quietly without echoing any of the build commands.</dd>
+
+<dt>--silent</dt>
+
+<dd>Run silently without echoing any of the build commands. Same as --quiet.</dd>
+
+<dt>-n</dt>
+
+<dd>Test mode. Print the commands but don’t actually execute them. Useful for making dry runs for
testing.</dd>
+
+<dt>--just-print</dt>
+
+<dd>Test mode. Print the commands but don’t actually execute them. Same as -n.</dd>
+
+<dt>--dry-run</dt>
+
+<dd>Test mode. Print the commands but don’t actually execute them. Same as -n.</dd>
+
+<dt>--recon</dt>
+
+<dd>Test mode. Print the commands but don’t actually execute them. Same as -n.</dd>
+
+<dt>--msvc-syntax</dt>
+
+<dd>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 <em>gimptool-2.0</em>’s work.</dd>
+
+<dt>--bindir</dt>
+
+<dd>Outputs the bindir used to install the <em>GIMP</em>.</dd>
+
+<dt>--sbindir</dt>
+
+<dd>Outputs the sbindir used to install the <em>GIMP</em>.</dd>
+
+<dt>--libexecdir</dt>
+
+<dd>Outputs the libexecdir used to install the <em>GIMP</em>.</dd>
+
+<dt>--datadir</dt>
+
+<dd>Outputs the datadir used to install the <em>GIMP</em>.</dd>
+
+<dt>--sysconfdir</dt>
+
+<dd>Outputs the sysconfdir used to install the <em>GIMP</em>.</dd>
+
+<dt>--sharedstatedir</dt>
+
+<dd>Outputs the sharedstatedir used to install the <em>GIMP</em>.</dd>
+
+<dt>--localstatedir</dt>
+
+<dd>Outputs the localstatedir used to install the <em>GIMP</em>.</dd>
+
+<dt>--libdir</dt>
+
+<dd>Outputs the libdir used to install the <em>GIMP</em>.</dd>
+
+<dt>--infodir</dt>
+
+<dd>Outputs the infodir used to install the <em>GIMP</em>.</dd>
+
+<dt>--mandir</dt>
+
+<dd>Outputs the mandir used to install the <em>GIMP</em>.</dd>
+
+<dt>--includedir</dt>
+
+<dd>Outputs the includedir used to install the <em>GIMP</em>.</dd>
+
+<dt>--gimpdatadir</dt>
+
+<dd>Outputs the actual directory where the <em>GIMP</em> data files were installed.</dd>
+
+<dt>--gimpplugindir</dt>
+
+<dd>Outputs the actual directory where the <em>GIMP</em> plug-ins were installed.</dd>
+
+<dt>--build <em>plug-in.c</em></dt>
+
+<dd>Compile and link <em>plug-in.c</em> into a <em>GIMP</em> plug-in.</dd>
+
+<dt>--build-strip <em>plug-in.c</em></dt>
+
+<dd>Compile,link, and strip <em>plug-in.c</em> into a <em>GIMP</em> plug-in.</dd>
+
+<dt>--install <em>plug-in.c</em></dt>
+
+<dd>Compile, link, and install <em>plug-in.c</em> into the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
+
+<dt>--install-strip <em>plug-in.c</em></dt>
+
+<dd>Compile, link,strip, and install <em>plug-in.c</em> into the user’s personal <em>GIMP</em> plug-in
directory (<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
+
+<dt>--install-admin <em>plug-in.c</em></dt>
+
+<dd>Compile, link, and install <em>plug-in.c</em> into the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
+
+<dt>--install-bin <em>plug-in</em></dt>
+
+<dd>Install <em>plug-in</em> into the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
+
+<dt>--install-admin-bin <em>plug-in</em></dt>
+
+<dd>Install <em>plug-in</em> into the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
+
+<dt>--install-bin-strip <em>plug-in</em></dt>
+
+<dd>Install stripped <em>plug-in</em> into the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
+
+<dt>--install-admin-bin-strip <em>plug-in</em></dt>
+
+<dd>Install stripped <em>plug-in</em> into the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
+
+<dt>--install-script <em>script.scm</em></dt>
+
+<dd>Install <em>script.scm</em> into the user’s personal <em>GIMP</em> script directory
(<strong>$HOME</strong>/.gimp-2.6/scripts)</dd>
+
+<dt>--install-admin-script <em>script.scm</em></dt>
+
+<dd>Install <em>script.scm</em> into the system-wide <em>GIMP</em> script directory
(/usr/share/gimp/2.0/scripts)</dd>
+
+<dt>--uninstall-bin <em>plug-in</em></dt>
+
+<dd>Uninstall <em>plug-in</em> from the user’s personal <em>GIMP</em> plug-in directory
(<strong>$HOME</strong>/.gimp-2.6/plug-ins)</dd>
+
+<dt>--uninstall-admin-bin <em>plug-in</em></dt>
+
+<dd>Uninstall <em>plug-in</em> from the system-wide <em>GIMP</em> plug-in directory
(/usr/lib64/gimp/2.0/plug-ins)</dd>
+
+<dt>--uninstall-script <em>script.scm</em></dt>
+
+<dd>Uninstall <em>script.scm</em> from the user’s personal <em>GIMP</em> script directory
(<strong>$HOME</strong>/.gimp-2.6/scripts)</dd>
+
+<dt>--uninstall-admin-script <em>script.scm</em></dt>
+
+<dd>Uninstall <em>script.scm</em> from the system-wide <em>GIMP</em> script directory
(/usr/share/gimp/2.0/scripts)</dd>
+
+<dt>--libs</dt>
+
+<dd>Print the linker flags that are necessary to link a <em>GIMP</em> plug-in.</dd>
+
+<dt>--libs-noui</dt>
+
+<dd>Print the linker flags that are necessary to link a <em>GIMP</em> plug-in, for plug-ins that do not
require the GTK+ libraries.</dd>
+
+<dt>--cflags</dt>
+
+<dd>Print the compiler flags that are necessary to compile a <em>GIMP</em> plug-in.</dd>
+
+<dt>--clags-noui</dt>
+
+<dd>Print the compiler flags that are necessary to compile a <em>GIMP</em> plug-in for plug-ins that do not
require the GTK+ libraries.</dd>
+
+<dt>--prefix=PREFIX</dt>
+
+<dd>If specified, use PREFIX instead of the installation prefix that <em>GIMP</em> 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.</dd>
+
+<dt>--exec-prefix=PREFIX</dt>
+
+<dd>If specified, use PREFIX instead of the installation exec prefix that <em>GIMP</em> was built with when
computing the output for the --cflags and --libs options. This option must be specified before any --libs or
--cflags options.</dd>
+
+</dl>
+
+## [Environment](#toc4)
+
+<dl>
+
+<dt>CC</dt>
+
+<dd>to get the name of the desired C compiler.</dd>
+
+<dt>CFLAGS</dt>
+
+<dd>to get the preferred flags to pass to the C compiler for plug-in building.</dd>
+
+<dt>DESTDIR</dt>
+
+<dd>to add a prefix to the install/uninstall path.</dd>
+
+<dt>LDFLAGS</dt>
+
+<dd>to get the preferred flags for passing to the linker.</dd>
+
+<dt>LIBS</dt>
+
+<dd>for passing extra libs that may be needed in the build process. For example, LIBS=-lintl .</dd>
+
+<dt>PKG_CONFIG</dt>
+
+<dd>to get the location of the <em>pkg-config</em> program that is used to determine details about your
glib, pango, gtk+ and gimp installation.</dd>
+
+</dl>
+
+## [See Also](#toc5)
+
+[**gimp**(1)](gimp.html) , [**gimprc**(5)](gimprc.html) , [**pkg-config**(1)](pkg-config.html)
+
+## [Authors](#toc6)
+
+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>).
+
+* * *
+
+<a name="toc">Table of Contents</a>
+
+* [Name](#sect0)
+* [Synopsis](#sect1)
+* [Description](#sect2)
+* [Options](#sect3)
+* [Environment](#sect4)
+* [See Also](#sect5)
+* [Authors](#sect6)
diff --git a/content/release-notes/gimp-2.2.md b/content/release-notes/gimp-2.2.md
index 298efea..1b810db 100644
--- a/content/release-notes/gimp-2.2.md
+++ b/content/release-notes/gimp-2.2.md
@@ -1,48 +1,48 @@
-Title: GIMP 2.2 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-The GIMP developers are proud to release version 2.2 of the **GNU Image Manipulation Program**. About nine
months after version 2.0 hit the road, we have completed another development cycle and can bring a new stable
GIMP to our users' desktops.
-
-## About GIMP
-
-The GNU Image Manipulation Program is ideal for amateur photographers, web designers, and many other people
who want to create and edit digital images. It is a very powerful application, with features including:
channels, layers and masks; colour operations such as levels, curves and threshhold; advanced selection
operations using intelligent scissors and selection channels; and much more.
-
-GIMP is free software, which means it can be freely distributed and modified. This makes it well suited to
be included on cover disks of magazines dedicated to digital photography or image editing, or to be included
with digital cameras, scanners, printers etc. As free software, its capabilities are ultimately limited only
by the collective imagination of the community of free software contributors. More information about GIMP is
available at [www.gimp.org](//www.gimp.org/).
-
-## Download
-
-GIMP can be downloaded as source code from ftp.gimp.org or from one of the mirrors listed in the
[Downloads](/downloads/) section. We expect that binary packages for the different supported platforms and
distributions will show up soon. Unless you are experienced with building software from source, you should
wait until binary packages become available.
-
-## Upgrading from GIMP 2.0
-
-Version 2.2 is an update on GIMP 2.0\. GIMP 2.2 is fully backward compatible to GIMP 2.0\. Plug-ins and
scripts written for GIMP 2.0 will continue to work and don't need to be changed nor recompiled to be used
with GIMP 2.2\. We do however hope that plug-in authors will update their plug-ins for GIMP 2.2 and adapt the
GUI changes we did with this version.
-
-GIMP 2.2 replaces GIMP 2.0\. It is advised that you uninstall GIMP 2.0 before installing GIMP 2.2\. If you
want to keep GIMP 2.0 installed in parallel to GIMP 2.2, you have to choose a separate prefix which is not in
your default library search path.
-
-## Help
-
-The GIMP user manual has been improved a lot over the last couple of months. We stronly suggest that you
install the latest version of the gimp-help-2 package together with GIMP 2.2\. You will then have
context-sensitive help in almost all dialogs by hitting the F1 key or by pressing the Help button which has
been added to most dialogs.
-
-gimp-help-2 is available from [ftp.gimp.org](ftp://ftp.gimp.org/pub/gimp/help/). The manual can also be
accessed online at [docs.gimp.org](http://docs.gimp.org/).
-
-## Bugs
-
-Thanks to the pre-releases we did over the last month, this code has already seen quite some testing but a
lot has changed since version GIMP 2.0 and we could very well have introduced new bugs. If you find any ,
make sure you report them at [bugzilla.gnome.org](http://bugzilla.gnome.org/) (after checking that it isn't
reported already).
-
-## What's New in GIMP 2.2
-
-We have collected a list of changes and new features in the [GIMP
Wiki](http://wiki.gimp.org/gimp/WhatsNew2). For a detailed list of changes, please have a look at the NEWS
file, which is contained in the tarball and available
[online](https://git.gnome.org/browse/gimp/plain/NEWS?h=gimp-2-2).
-
-## What's Next
-
-You can expect updated versions of gimp-gap, gimp-freetype, gimp-plugin-template and hopefully also
gimp-perl to appear over the next weeks. The GIMP source tree will soon be branched so that development can
continue towards GIMP 2.4\. We haven't yet made up a detailed roadmap, but we will try to publish one soon.
-
-Lots of people have helped to make this release happen. Thanks to all the contributors who wrote code, sent
patches, worked on the docs, translated the user interface, reported bugs or just made helpful suggestions.
GIMP 2.2 wouldn't exist without your help. Keep it coming!
-
-_Happy GIMPing,
- The GIMP developers_
-
+Title: GIMP 2.2 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+The GIMP developers are proud to release version 2.2 of the **GNU Image Manipulation Program**. About nine
months after version 2.0 hit the road, we have completed another development cycle and can bring a new stable
GIMP to our users' desktops.
+
+## About GIMP
+
+The GNU Image Manipulation Program is ideal for amateur photographers, web designers, and many other people
who want to create and edit digital images. It is a very powerful application, with features including:
channels, layers and masks; colour operations such as levels, curves and threshhold; advanced selection
operations using intelligent scissors and selection channels; and much more.
+
+GIMP is free software, which means it can be freely distributed and modified. This makes it well suited to
be included on cover disks of magazines dedicated to digital photography or image editing, or to be included
with digital cameras, scanners, printers etc. As free software, its capabilities are ultimately limited only
by the collective imagination of the community of free software contributors. More information about GIMP is
available at [www.gimp.org](//www.gimp.org/).
+
+## Download
+
+GIMP can be downloaded as source code from ftp.gimp.org or from one of the mirrors listed in the
[Downloads](/downloads/) section. We expect that binary packages for the different supported platforms and
distributions will show up soon. Unless you are experienced with building software from source, you should
wait until binary packages become available.
+
+## Upgrading from GIMP 2.0
+
+Version 2.2 is an update on GIMP 2.0\. GIMP 2.2 is fully backward compatible to GIMP 2.0\. Plug-ins and
scripts written for GIMP 2.0 will continue to work and don't need to be changed nor recompiled to be used
with GIMP 2.2\. We do however hope that plug-in authors will update their plug-ins for GIMP 2.2 and adapt the
GUI changes we did with this version.
+
+GIMP 2.2 replaces GIMP 2.0\. It is advised that you uninstall GIMP 2.0 before installing GIMP 2.2\. If you
want to keep GIMP 2.0 installed in parallel to GIMP 2.2, you have to choose a separate prefix which is not in
your default library search path.
+
+## Help
+
+The GIMP user manual has been improved a lot over the last couple of months. We stronly suggest that you
install the latest version of the gimp-help-2 package together with GIMP 2.2\. You will then have
context-sensitive help in almost all dialogs by hitting the F1 key or by pressing the Help button which has
been added to most dialogs.
+
+gimp-help-2 is available from [ftp.gimp.org](ftp://ftp.gimp.org/pub/gimp/help/). The manual can also be
accessed online at [docs.gimp.org](http://docs.gimp.org/).
+
+## Bugs
+
+Thanks to the pre-releases we did over the last month, this code has already seen quite some testing but a
lot has changed since version GIMP 2.0 and we could very well have introduced new bugs. If you find any ,
make sure you report them at [bugzilla.gnome.org](http://bugzilla.gnome.org/) (after checking that it isn't
reported already).
+
+## What's New in GIMP 2.2
+
+We have collected a list of changes and new features in the [GIMP
Wiki](http://wiki.gimp.org/gimp/WhatsNew2). For a detailed list of changes, please have a look at the NEWS
file, which is contained in the tarball and available
[online](https://git.gnome.org/browse/gimp/plain/NEWS?h=gimp-2-2).
+
+## What's Next
+
+You can expect updated versions of gimp-gap, gimp-freetype, gimp-plugin-template and hopefully also
gimp-perl to appear over the next weeks. The GIMP source tree will soon be branched so that development can
continue towards GIMP 2.4\. We haven't yet made up a detailed roadmap, but we will try to publish one soon.
+
+Lots of people have helped to make this release happen. Thanks to all the contributors who wrote code, sent
patches, worked on the docs, translated the user interface, reported bugs or just made helpful suggestions.
GIMP 2.2 wouldn't exist without your help. Keep it coming!
+
+_Happy GIMPing,
+ The GIMP developers_
+
diff --git a/content/release-notes/gimp-2.3.3.md b/content/release-notes/gimp-2.3.3.md
index d8bdf7a..4fbf74a 100644
--- a/content/release-notes/gimp-2.3.3.md
+++ b/content/release-notes/gimp-2.3.3.md
@@ -1,21 +1,21 @@
-Title: GIMP 2.3.3 Simplifies the Extraction of Foreground Objects
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-The new development release 2.3.3 of the free image manipulation software GIMP now contains a preliminary
version of a new selection tool called SIOX. Until now, creating a selection mask for an object was mostly
equivalent to either a slow step-by-step approximation to a certain shape or a tedious manual drawing of the
selection. SIOX ("Simple Interactive Object eXtraction") allows a semi-automatic pixel-accurate selection of
typical foreground objects like portraits of humans, animals, or plants with only a few mouse clicks. The
user only encloses the object with a rough outline and uses a foreground brush to mark representative
foreground regions. GIMP then answers with the extraction of the object. The selection can be refined by
incrementally adding further foreground brush strokes or by subtracting regions with background brush
strokes. SIOX is being developed at the Center for Digital Media at the computer science department at Freie
Universitaet Berlin and roots from
video processing applications.
-
-GIMP Version 2.3.3 represents the current state of development. There are still features missing that are
planned for the stable 2.4 release. Some work has already been done on the color management that had been
announced for the 2.4 release. Using the preferences dialog a color profile for the screen can already be
specified that GIMP 2.3 uses to correct the display. In the final release of GIMP 2.4, pictures containing
embedded color profiles will also be handled.
-
-Work is also being done on the user interface: The script-fu menu does not exist any more because most of
the scripts have been integrated into the filter menu. There will be further changes - some of them have
already been discussed in the Bugtracker. In addition to the SIOX tool there are several other new tools: A
new rectangle selection tool allows to change the rectangle even after selecting. The alignment of layers is
simplified by another tool.
-
-There were also some changes behind the scenes: Users of G4 processors will enjoy the speed improvement that
results from supporting the Altivec instruction set. GIMP also reacted to the trend of using Hyperthreading
and Dualcore CPUs. In order to utilize multiple processors at a time several internal functions were
parallelized.
-
-A detailed list of all changes since GIMP 2.2 is available
[here](https://git.gnome.org/browse/gimp/plain/NEWS?id=GIMP_2_3_3). It will take a little more time until the
GIMP developers will present the next stable release. Those who do not want to wait are free to try GIMP
2.3.3\. For those who yearn for a faster release: Help is always welcome! Not only programmers are needed but
also web designers, documentation authors and translators are desperately needed.
-
-[GIMP Homepage](//www.gimp.org)
-[GIMP User Manual](http://docs.gimp.org)
-[SIOX Algorithm](http://www.siox.org)
-
+Title: GIMP 2.3.3 Simplifies the Extraction of Foreground Objects
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+The new development release 2.3.3 of the free image manipulation software GIMP now contains a preliminary
version of a new selection tool called SIOX. Until now, creating a selection mask for an object was mostly
equivalent to either a slow step-by-step approximation to a certain shape or a tedious manual drawing of the
selection. SIOX ("Simple Interactive Object eXtraction") allows a semi-automatic pixel-accurate selection of
typical foreground objects like portraits of humans, animals, or plants with only a few mouse clicks. The
user only encloses the object with a rough outline and uses a foreground brush to mark representative
foreground regions. GIMP then answers with the extraction of the object. The selection can be refined by
incrementally adding further foreground brush strokes or by subtracting regions with background brush
strokes. SIOX is being developed at the Center for Digital Media at the computer science department at Freie
Universitaet Berlin and roots from
video processing applications.
+
+GIMP Version 2.3.3 represents the current state of development. There are still features missing that are
planned for the stable 2.4 release. Some work has already been done on the color management that had been
announced for the 2.4 release. Using the preferences dialog a color profile for the screen can already be
specified that GIMP 2.3 uses to correct the display. In the final release of GIMP 2.4, pictures containing
embedded color profiles will also be handled.
+
+Work is also being done on the user interface: The script-fu menu does not exist any more because most of
the scripts have been integrated into the filter menu. There will be further changes - some of them have
already been discussed in the Bugtracker. In addition to the SIOX tool there are several other new tools: A
new rectangle selection tool allows to change the rectangle even after selecting. The alignment of layers is
simplified by another tool.
+
+There were also some changes behind the scenes: Users of G4 processors will enjoy the speed improvement that
results from supporting the Altivec instruction set. GIMP also reacted to the trend of using Hyperthreading
and Dualcore CPUs. In order to utilize multiple processors at a time several internal functions were
parallelized.
+
+A detailed list of all changes since GIMP 2.2 is available
[here](https://git.gnome.org/browse/gimp/plain/NEWS?id=GIMP_2_3_3). It will take a little more time until the
GIMP developers will present the next stable release. Those who do not want to wait are free to try GIMP
2.3.3\. For those who yearn for a faster release: Help is always welcome! Not only programmers are needed but
also web designers, documentation authors and translators are desperately needed.
+
+[GIMP Homepage](//www.gimp.org)
+[GIMP User Manual](http://docs.gimp.org)
+[SIOX Algorithm](http://www.siox.org)
+
diff --git a/content/release-notes/gimp-2.3.md b/content/release-notes/gimp-2.3.md
index 75b73bd..531aa2d 100644
--- a/content/release-notes/gimp-2.3.md
+++ b/content/release-notes/gimp-2.3.md
@@ -1,49 +1,49 @@
-Title: GIMP 2.3 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-# GIMP 2.3 Release Notes
-
-This is an unstable development version of the **GNU Image Manipulation Program**. Please realize that this
is just a snapshot of the development tree. We are about halfway up the hill to GIMP 2.4, the next stable
release. GIMP 2.3 is in no way a final product. A lot of new features are incomplete and some things may even
be completely broken. If you need to get work done, please use the stable version, GIMP 2.2.
-
-## What's New in GIMP 2.3
-
-Please see the [NEWS](https://git.gnome.org/browse/gimp/plain/NEWS?h=gimp-2-4&id=GIMP_2_3_0) file for a list
of changes. [Screenshots](//developer.gimp.org/screenshots.html) of the development version can also be found
there.
-
-## Download
-
-The development snapshots of GIMP can be downloaded as source code from ftp.gimp.org or from one of the
mirrors listed in the [Downloads](/downloads/#mirrors) section.
-
-Distribution of binary packages of the development version is discouraged unless it is made clear that this
is an early development snapshot. Users should be referred to these release notes or similar information.
-
-## Installation
-
-GIMP 2.3 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.2 or GIMP 2.0 installation in parallel to GIMP 2.3, you have to choose a separate installation prefix
at compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
-
-You install the new version into a separate prefix, say /opt/gimp-2.3 by passing `--prefix=/opt/gimp-2.3` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.3/bin by setting `PATH=/opt/gimp-2.3/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.3/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.3/lib`. Do not forget to `export`
both variables.
-
-You can use a tiny wrapper script called gimp-2.3 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
-
- #!/bin/sh
-
- PATH=/opt/gimp-2.3/bin:$PATH
- export PATH
- LD_LIBRARY_PATH=/opt/gimp-2.3/lib
- export LD_LIBRARY_PATH
-
- /opt/gimp-2.3/bin/gimp-2.3 "$@"
-
-## Bugs
-
-If you think you found a bug in a development version, please make sure that it hasn't been reported
earlier. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
-
-* [Open bugs with milestone
2.4](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.4&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [Resolved bugs with milestone
2.4](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.4&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
-
-## Contributing
-
-We need your help to make GIMP 2.4 a success. There's still a lot to do in all areas. If you want to join us
hacking, show up in #gimp or introduce yourself on the gimp-developer mailing-list. We are also looking for
people to look after the web-site and update the tutorials. Or you might want to join the [documentation
team](http://docs.gimp.org/).
-
+Title: GIMP 2.3 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+# GIMP 2.3 Release Notes
+
+This is an unstable development version of the **GNU Image Manipulation Program**. Please realize that this
is just a snapshot of the development tree. We are about halfway up the hill to GIMP 2.4, the next stable
release. GIMP 2.3 is in no way a final product. A lot of new features are incomplete and some things may even
be completely broken. If you need to get work done, please use the stable version, GIMP 2.2.
+
+## What's New in GIMP 2.3
+
+Please see the [NEWS](https://git.gnome.org/browse/gimp/plain/NEWS?h=gimp-2-4&id=GIMP_2_3_0) file for a list
of changes. [Screenshots](//developer.gimp.org/screenshots.html) of the development version can also be found
there.
+
+## Download
+
+The development snapshots of GIMP can be downloaded as source code from ftp.gimp.org or from one of the
mirrors listed in the [Downloads](/downloads/#mirrors) section.
+
+Distribution of binary packages of the development version is discouraged unless it is made clear that this
is an early development snapshot. Users should be referred to these release notes or similar information.
+
+## Installation
+
+GIMP 2.3 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.2 or GIMP 2.0 installation in parallel to GIMP 2.3, you have to choose a separate installation prefix
at compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
+
+You install the new version into a separate prefix, say /opt/gimp-2.3 by passing `--prefix=/opt/gimp-2.3` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.3/bin by setting `PATH=/opt/gimp-2.3/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.3/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.3/lib`. Do not forget to `export`
both variables.
+
+You can use a tiny wrapper script called gimp-2.3 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
+
+ #!/bin/sh
+
+ PATH=/opt/gimp-2.3/bin:$PATH
+ export PATH
+ LD_LIBRARY_PATH=/opt/gimp-2.3/lib
+ export LD_LIBRARY_PATH
+
+ /opt/gimp-2.3/bin/gimp-2.3 "$@"
+
+## Bugs
+
+If you think you found a bug in a development version, please make sure that it hasn't been reported
earlier. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
+
+* [Open bugs with milestone
2.4](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.4&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [Resolved bugs with milestone
2.4](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.4&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
+
+## Contributing
+
+We need your help to make GIMP 2.4 a success. There's still a lot to do in all areas. If you want to join us
hacking, show up in #gimp or introduce yourself on the gimp-developer mailing-list. We are also looking for
people to look after the web-site and update the tutorials. Or you might want to join the [documentation
team](http://docs.gimp.org/).
+
diff --git a/content/release-notes/gimp-2.4-cm.md b/content/release-notes/gimp-2.4-cm.md
index b1d5b66..8c9cfca 100644
--- a/content/release-notes/gimp-2.4-cm.md
+++ b/content/release-notes/gimp-2.4-cm.md
@@ -1,35 +1,35 @@
-Title: GIMP 2.4 Color Management
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-Many devices you use in your design or photography workflow, like digital photo cameras, scanners, displays,
printers etc., have their own color reproduction characteristics. If those are not taken into account during
opening, editing and saving, harmful adjustments can be done to images. With GIMP 2.4 this has changed: now
you can have reliable output for both Web and print.
-
-<figure>
-<img src="{filename}images/color-management.png" alt="color management" style="background-color: #2e3436;"/>
-</figure>
-
-## Color Managed Workflow
-
-### Input
-
-Most digital cameras embed a color profile to individual photo files without user interaction. Digital
scanners usually come with a color profile, which they also attach to the scanned images.
-
-When opening an image with an embedded color profile, GIMP 2.4 offers to convert the file to the RGB working
color space. This is **sRGB** by default and it is recommended that all work is done in that color space.
Should the user decide to keep the embedded color profile, the image will however still be displayed
correctly.
-
-In case for some reason a color profile is not embedded in the image and you know (or have a good guess)
which one it should be, you can manually assign it to that image.
-
-### Display
-
-To get best results, you need a color profile for your monitor. If a monitor profile is configured, either
system-wide or in the Color Management section of the GIMP Preferences dialog, the image colors will be
displayed most accurately.
-
-If you do not have a color profile for your monitor, you can create it using hardware calibration and
measurement tools. On UNIX systems you will need [Argyll Color Management System](http://www.argyllcms.com/)
and/or [LProf](http://lprof.sourceforge.net/) to create color profiles.
-
-### Print Simulation
-
-Using GIMP 2.4, you can easily get a preview of what your image will look like on paper. Given a color
profile for your printer, the display can be switched into _Soft Proof_ mode. In such a simulated printout,
colors that cannot be reproduced will optionally be marked with neutral gray color, allowing you to correct
such mistakes before sending your images to the printer.
-
-[Return to the release notes](gimp-2.4.html)
-
+Title: GIMP 2.4 Color Management
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+Many devices you use in your design or photography workflow, like digital photo cameras, scanners, displays,
printers etc., have their own color reproduction characteristics. If those are not taken into account during
opening, editing and saving, harmful adjustments can be done to images. With GIMP 2.4 this has changed: now
you can have reliable output for both Web and print.
+
+<figure>
+<img src="{filename}images/color-management.png" alt="color management" style="background-color: #2e3436;"/>
+</figure>
+
+## Color Managed Workflow
+
+### Input
+
+Most digital cameras embed a color profile to individual photo files without user interaction. Digital
scanners usually come with a color profile, which they also attach to the scanned images.
+
+When opening an image with an embedded color profile, GIMP 2.4 offers to convert the file to the RGB working
color space. This is **sRGB** by default and it is recommended that all work is done in that color space.
Should the user decide to keep the embedded color profile, the image will however still be displayed
correctly.
+
+In case for some reason a color profile is not embedded in the image and you know (or have a good guess)
which one it should be, you can manually assign it to that image.
+
+### Display
+
+To get best results, you need a color profile for your monitor. If a monitor profile is configured, either
system-wide or in the Color Management section of the GIMP Preferences dialog, the image colors will be
displayed most accurately.
+
+If you do not have a color profile for your monitor, you can create it using hardware calibration and
measurement tools. On UNIX systems you will need [Argyll Color Management System](http://www.argyllcms.com/)
and/or [LProf](http://lprof.sourceforge.net/) to create color profiles.
+
+### Print Simulation
+
+Using GIMP 2.4, you can easily get a preview of what your image will look like on paper. Given a color
profile for your printer, the display can be switched into _Soft Proof_ mode. In such a simulated printout,
colors that cannot be reproduced will optionally be marked with neutral gray color, allowing you to correct
such mistakes before sending your images to the printer.
+
+[Return to the release notes](gimp-2.4.html)
+
diff --git a/content/release-notes/gimp-2.4-videos.md b/content/release-notes/gimp-2.4-videos.md
index 84bb2bb..2f48f83 100644
--- a/content/release-notes/gimp-2.4-videos.md
+++ b/content/release-notes/gimp-2.4-videos.md
@@ -1,41 +1,41 @@
-Title: GIMP 2.4 Release Notes - Videos
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-This page includes the video demonstrations that have been kindly offered to us by GIMP users. If you would
like to convert some of these videos to a different format so that we can offer them to a wider audience,
please [contact us](/webmasters.html) and we will add the links to this page.
-
-## Foreground Select Tool
-
-<div class='fluid-video'>
-<iframe width="480" height="360" src="https://www.youtube-nocookie.com/embed/I8fW6Z2yxUY?rel=0"
frameborder="0" allowfullscreen></iframe>
-</div>
-
-Versions available:
-
-* [Ogg/Theora file](http://assets.gimp.org/video/Foreground_tool.ogg) (512x384, 2613 KB)
-* [Google Video](http://video.google.com/videoplay?docid=2540655610648907719) (Flash version or small
downloadable MPEG-4 version)
-* [High-resolution MPEG file](http://www.mediafire.com/?0w1yilbxtmh) (800x600 MPEG-4, 38 MB zipped)
-
-## Perspective Clone
-
-<div class="fluid-video">
-<iframe width="480" height="360" src="https://www.youtube-nocookie.com/embed/s0v7TlVMTDg?rel=0"
frameborder="0" allowfullscreen></iframe>
-</div>
-
-Versions available:
-
-* [Ogg/Theora file](http://assets.gimp.org/video/Perspective_Clone.ogg) (512x384, 3503 KB)
-* [Google Video](http://video.google.com/videoplay?docid=-3077868802879051003) (Flash version or small
downloadable MPEG-4 version)
-* [High-resolution MPEG file](http://www.mediafire.com/?fim1wkdx1nj) (800x600 MPEG-4, 41 MB zipped)
-
-## Lens Distortion
-
-Versions available:
-
-* [Google Video](http://video.google.com/videoplay?docid=1146746790574496439) (Flash version or small
downloadable MPEG-4 version)
-
-[Return to the release notes](gimp-2.4.html)
-
+Title: GIMP 2.4 Release Notes - Videos
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+This page includes the video demonstrations that have been kindly offered to us by GIMP users. If you would
like to convert some of these videos to a different format so that we can offer them to a wider audience,
please [contact us](/webmasters.html) and we will add the links to this page.
+
+## Foreground Select Tool
+
+<div class='fluid-video'>
+<iframe width="480" height="360" src="https://www.youtube-nocookie.com/embed/I8fW6Z2yxUY?rel=0"
frameborder="0" allowfullscreen></iframe>
+</div>
+
+Versions available:
+
+* [Ogg/Theora file](http://assets.gimp.org/video/Foreground_tool.ogg) (512x384, 2613 KB)
+* [Google Video](http://video.google.com/videoplay?docid=2540655610648907719) (Flash version or small
downloadable MPEG-4 version)
+* [High-resolution MPEG file](http://www.mediafire.com/?0w1yilbxtmh) (800x600 MPEG-4, 38 MB zipped)
+
+## Perspective Clone
+
+<div class="fluid-video">
+<iframe width="480" height="360" src="https://www.youtube-nocookie.com/embed/s0v7TlVMTDg?rel=0"
frameborder="0" allowfullscreen></iframe>
+</div>
+
+Versions available:
+
+* [Ogg/Theora file](http://assets.gimp.org/video/Perspective_Clone.ogg) (512x384, 3503 KB)
+* [Google Video](http://video.google.com/videoplay?docid=-3077868802879051003) (Flash version or small
downloadable MPEG-4 version)
+* [High-resolution MPEG file](http://www.mediafire.com/?fim1wkdx1nj) (800x600 MPEG-4, 41 MB zipped)
+
+## Lens Distortion
+
+Versions available:
+
+* [Google Video](http://video.google.com/videoplay?docid=1146746790574496439) (Flash version or small
downloadable MPEG-4 version)
+
+[Return to the release notes](gimp-2.4.html)
+
diff --git a/content/release-notes/gimp-2.4.md b/content/release-notes/gimp-2.4.md
index 5edc15a..087731e 100644
--- a/content/release-notes/gimp-2.4.md
+++ b/content/release-notes/gimp-2.4.md
@@ -1,168 +1,168 @@
-Title: GIMP 2.4 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-## General Improvements
-
-### Refreshed Look
-
-A whole new default icon theme has been created for 2.4\. The icons comply with the [Tango style
guidelines](http://tango.freedesktop.org/Tango_Icon_Theme_Guidelines) so GIMP doesn't feel out of place on
any of the supported platforms. Regardless of whether you run GIMP under Microsoft Windows, Mac OS X or
GNU/Linux ([GNOME](http://www.gnome.org/), [KDE](http://www.kde.org/) or [Xfce](http://www.xfce.org/)), GIMP
provides a polished, consistent look.
-
-<figure>
-<img src="{filename}images/2.4-refreshed-look.png" alt="Refreshed Look"/>
-</figure>
-
-Additionally the icons also have enhanced usability on dark widget themes, which is a common setting among
digital artists.
-
-For artists preferring more desaturated color theme for their icons, an [alternative icon
theme](http://jimmac.musichall.cz/zip/GIMP-Greyscale-tools-0.1.tar.bz2) is available for download.
-
-### Scalable Brushes
-
-<figure>
-<img src="{filename}images/2.4-scalable-brushes.png" alt="Scalable Brushes"/>
-</figure>
-
-The tool options now include a brush size slider that affects both the parametric and bitmap brushes. This
has been an oft-requested feature from both digital painters and photo editors.
-
-Unlike previous versions of GIMP, regardless of whether you're using a bitmap brush, parametric brush or
even a picture tube (multiple bitmaps), you can easily set the brush size with either the tool options dock
slider or an external device such as a MIDI slider or knob or a USB device like the Griffin Powermate.
-
-### Selection Tools
-
-<figure>
-<img src="{filename}images/2.4-selection-tools.png" alt="Selection Tools"/>
-</figure>
-
-The selection tools have been rewritten from scratch to allow resizing of existing selections. Additionally
the rectangular selection tool includes a setting for creating rounded corners as this has been identified as
a very common task among web designers.
-
-The learning curve for the tools has been flattened as the key functionality is available without obscure
shortcuts that confused GIMP beginners. Most of the existing shortcuts still work, but the functionality is
either available through the tool options or made obsolete due to the interactive move and resize on canvas.
-
-While the tools have been redesigned to make them easier to understand for the newbies, all the former
functionality is there. You can still constrain aspect ratios or specific sizes.
-
-### Foreground Select Tool
-
-<figure>
-<img src="{filename}images/2.4-video-fgselect.jpg" alt="Foreground Select Demo"/>
-</figure>
-
-Selecting individual objects on images is easier now with a new foreground select tool. It is done in two
steps. First, you make select region of interest which contains the entire object. Then you paint over
selected area with a brush, not crossing object’s border. Release mouse button when you’re done and look, if
there are dark blue spots on your objects. If there are some, paint with a brush over them again and release
to refine selection. When there are no more blue areas inside the object, press Enter and there you have a
perfectly selected object.
-
-<small>All video demonstrations can also be viewed or downloaded from a [separate
page](gimp-2.4-videos.html).</small>
-
-### Align Tool
-
-<figure>
-<img src="{filename}images/2.4-align-tool.png" alt="Align Tool"/>
-</figure>
-
-While GIMP has provided a grid and guideline functionality, the actual alignment of objects had to be done
manually. In a few clicks, the new Align Tool allows you to align or distribute a list of layers, paths or
guides. You can align these objects with another object, with the selection or with the image.
-
-### Changes in menus
-
-Most notable is the new top-level Color menu that accumulates most tools, plug-ins and scripts that adjust
colors in RGB/Grayscale mode and color palettes in Indexed mode. So now you can reach functions like Levels
or Curves much faster than before. You can also define your own keyboard shortcuts for them using the
improved keyboard shortcuts manager.
-
-In the new version of GIMP, some menu entries have changed their names and position. It was done mostly to
simplify learning curve and improve user experience. After all, "HSV Noise" and "RGB Noise" sound more
meaningful than "Scatter HSV" and "Scatter RGB", don't they? And status bar hints for all plug-ins and
scripts are quite helpful too.
-
-### Improved display when zooming in or out
-
-<figure>
-<img src="{filename}images/2.4-zoom-display.png" alt="Zoomed out display"/>
-</figure>
-
-Previous versions of GIMP used a fast but inaccurate way of displaying images at various zoom levels. When
zooming out, some rows and columns of pixels where simply omitted from the display. The result was sometimes
confusing, especially if the image contained many thin lines or small features. GIMP 2.4 avoids these
problems and provides a better view of the zoomed-out images.
-
-### Support for file formats
-
-* Support for Photoshop ABR brush format;
-* Improved reading/writing EXIF in JPEG;
-* Importing clipping paths in TIFF;
-* Layer masks can be saved to PSD;
-* 16/32 bit bitmaps and alpha-channel support in BMP;
-* 24 bit and Vista icons can be opened and saved.
-
-## Digital Photography
-
-### Fullscreen Editing
-
-The fullscreen mode has been improved to not only allow getting a full scale preview of the artwork, but
also allow comfortable editing. The artist has maximum screen estate available while all functionality is
quickly accessible by pressing the Tab key (toggles visibility of all docks) when working fullscreen.
-
-Whether painting or touching up photos, fullscreen editing keeps all the distracting elements out of sight
on a key press. It's like observing stars in a field as opposed to a light-polluted city.
-
-### Color Management and Soft-proofing
-
-<figure>
-<img src="{filename}images/2.4-color-management.png" alt="Color Management"/>
-</figure>
-
-GIMP now provides full support for color profiles allowing precise color modification throughout the whole
'digital darkroom' process.
-
-For more information, see [color management](gimp-2.4-cm.html).
-
-### New Crop Tool
-
-<figure>
-<img src="{filename}images/2.4-crop-tool.png" alt="Crop Tool"/>
-</figure>
-
-Just like the selection tools, the new crop tool has been enhanced since the last release. The resize
handles actually resize the crop rectangle instead of providing both resize and move functionality. The tool
behaves more naturally and consistently with other GIMP tools.
-
-To move, simply drag the rectangle clicking within the area. Resizing is possible in one or two axes at the
same time dragging the handle-bars on the sides and corners. The outside area is darkened with a nice
passepartout effect to better get the idea of how the final crop will look like.
-
-### Improved Printing
-
-<figure>
-<img src="{filename}images/gimp-24-print-dark.png" alt="Improved Printing"/>
-</figure>
-
-Printing has been largely improved. GIMP makes use of the advancements in the gtk+ printing API so that you
can control all aspects of the printout with an easy to understand interface and immediate preview.
-
-### Red Eye Removal
-
-While numerous red-eye workflows exist already, GIMP now features a very convenient auto-magic filter to
remove red eye from your shots.
-
-### Perspective Clone
-
-<figure>
-<img src="{filename}images/2.4-video-perspective.jpg" alt="Perspective Clone Demo"/>
-</figure>
-
-A common task in image editing is to copy pixels from somewhere in an image to somewhere else. Traditionally
this has been done using the Clone Tool. To make it easy to perform cloning while taking the perspective of
an image into account, a new Perspective Clone Tool has been added to GIMP.
-
-<small>All video demonstrations can also be viewed or downloaded from a [separate
page](gimp-2.4-videos.html).</small>
-
-### Lens Distortion
-
-<figure>
-<img src="{filename}images/2.4-video-lens.jpg" alt="Lens Distortion Demo"/>
-</figure>
-
-A very common problem exposing itself especially when using cheaper lenses or expensive lenses pushed to
their limits, is barrel distortion and vignetting. Luckily GIMP provides a brand new filter to compensate for
both problems. Saving photographer's pocket is our mission!
-
-<small>All video demonstrations can also be viewed or downloaded from a [separate
page](gimp-2.4-videos.html).</small>
-
-### JPEG quality
-
-When editing photographs, it is usually better to work with a lossless image format and only save the final
result as JPEG. But if you have to work with JPEG images as input, then a new option allows you to use the
same compression parameters as the original image when you re-save it.
-
-## Various Other Improvements
-
-In addition to all the above, GIMP has been improved in other areas. For instance, better status information
and some hints have been added in the status bar of the image windows. You can easily discover new features
and new shortcuts by trying the various keys and modifiers that are suggested while you are using the tools.
-
-<figure>
-<img src="{filename}images/2.4-statusbar-tips.png" alt="Hints in the status bar"/>
-</figure>
-
-A number of changes has gone into plug-ins and scripts. First of all, a new preview widget for plug-ins was
introduced. Now you can zoom in and out using the mouse wheel or +/- buttons in plug-in dialogs and pan
around.
-
-Several plug-ins like Gaussian Blur, Selective Gaussian Blur and Value Invert have received special
attention with regards to speed of processing and work significantly faster now. Additionally, the Motion
Blur filter can blur outwards now, and its quality has also improved.
-
-You will also note that the new Screenshot plug-in offers more sophisticated options and is far easier to
use.
-
-<figure>
-<img src="{filename}images/2.4-screenshot-plugin.png" alt="Screenshot plug-in"/>
-</figure>
-
-GIMP 2.4 features a brand new Scheme interpreter that provides better debugging, handles UTF-8 coded
characters and strings, has regex based pattern matching and many more useful features that power users were
requesting. The latter will be pleased to find out that plug-ins and scripts can register menu entries in the
<Brushes>, <Gradients>, <Palettes>, <Patterns> and <Fonts> menus now. Also, a
fair amount of new scripts were added: reversing the order of layers, sorting color palettes etc. A few
scripts that were using incorrect or deprecated constructs may have to be updated. A [Script-Fu migration
guide](/docs/script-fu-update.html) lists the most common errors and how to fix them.
-
+Title: GIMP 2.4 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+## General Improvements
+
+### Refreshed Look
+
+A whole new default icon theme has been created for 2.4\. The icons comply with the [Tango style
guidelines](http://tango.freedesktop.org/Tango_Icon_Theme_Guidelines) so GIMP doesn't feel out of place on
any of the supported platforms. Regardless of whether you run GIMP under Microsoft Windows, Mac OS X or
GNU/Linux ([GNOME](http://www.gnome.org/), [KDE](http://www.kde.org/) or [Xfce](http://www.xfce.org/)), GIMP
provides a polished, consistent look.
+
+<figure>
+<img src="{filename}images/2.4-refreshed-look.png" alt="Refreshed Look"/>
+</figure>
+
+Additionally the icons also have enhanced usability on dark widget themes, which is a common setting among
digital artists.
+
+For artists preferring more desaturated color theme for their icons, an [alternative icon
theme](http://jimmac.musichall.cz/zip/GIMP-Greyscale-tools-0.1.tar.bz2) is available for download.
+
+### Scalable Brushes
+
+<figure>
+<img src="{filename}images/2.4-scalable-brushes.png" alt="Scalable Brushes"/>
+</figure>
+
+The tool options now include a brush size slider that affects both the parametric and bitmap brushes. This
has been an oft-requested feature from both digital painters and photo editors.
+
+Unlike previous versions of GIMP, regardless of whether you're using a bitmap brush, parametric brush or
even a picture tube (multiple bitmaps), you can easily set the brush size with either the tool options dock
slider or an external device such as a MIDI slider or knob or a USB device like the Griffin Powermate.
+
+### Selection Tools
+
+<figure>
+<img src="{filename}images/2.4-selection-tools.png" alt="Selection Tools"/>
+</figure>
+
+The selection tools have been rewritten from scratch to allow resizing of existing selections. Additionally
the rectangular selection tool includes a setting for creating rounded corners as this has been identified as
a very common task among web designers.
+
+The learning curve for the tools has been flattened as the key functionality is available without obscure
shortcuts that confused GIMP beginners. Most of the existing shortcuts still work, but the functionality is
either available through the tool options or made obsolete due to the interactive move and resize on canvas.
+
+While the tools have been redesigned to make them easier to understand for the newbies, all the former
functionality is there. You can still constrain aspect ratios or specific sizes.
+
+### Foreground Select Tool
+
+<figure>
+<img src="{filename}images/2.4-video-fgselect.jpg" alt="Foreground Select Demo"/>
+</figure>
+
+Selecting individual objects on images is easier now with a new foreground select tool. It is done in two
steps. First, you make select region of interest which contains the entire object. Then you paint over
selected area with a brush, not crossing object’s border. Release mouse button when you’re done and look, if
there are dark blue spots on your objects. If there are some, paint with a brush over them again and release
to refine selection. When there are no more blue areas inside the object, press Enter and there you have a
perfectly selected object.
+
+<small>All video demonstrations can also be viewed or downloaded from a [separate
page](gimp-2.4-videos.html).</small>
+
+### Align Tool
+
+<figure>
+<img src="{filename}images/2.4-align-tool.png" alt="Align Tool"/>
+</figure>
+
+While GIMP has provided a grid and guideline functionality, the actual alignment of objects had to be done
manually. In a few clicks, the new Align Tool allows you to align or distribute a list of layers, paths or
guides. You can align these objects with another object, with the selection or with the image.
+
+### Changes in menus
+
+Most notable is the new top-level Color menu that accumulates most tools, plug-ins and scripts that adjust
colors in RGB/Grayscale mode and color palettes in Indexed mode. So now you can reach functions like Levels
or Curves much faster than before. You can also define your own keyboard shortcuts for them using the
improved keyboard shortcuts manager.
+
+In the new version of GIMP, some menu entries have changed their names and position. It was done mostly to
simplify learning curve and improve user experience. After all, "HSV Noise" and "RGB Noise" sound more
meaningful than "Scatter HSV" and "Scatter RGB", don't they? And status bar hints for all plug-ins and
scripts are quite helpful too.
+
+### Improved display when zooming in or out
+
+<figure>
+<img src="{filename}images/2.4-zoom-display.png" alt="Zoomed out display"/>
+</figure>
+
+Previous versions of GIMP used a fast but inaccurate way of displaying images at various zoom levels. When
zooming out, some rows and columns of pixels where simply omitted from the display. The result was sometimes
confusing, especially if the image contained many thin lines or small features. GIMP 2.4 avoids these
problems and provides a better view of the zoomed-out images.
+
+### Support for file formats
+
+* Support for Photoshop ABR brush format;
+* Improved reading/writing EXIF in JPEG;
+* Importing clipping paths in TIFF;
+* Layer masks can be saved to PSD;
+* 16/32 bit bitmaps and alpha-channel support in BMP;
+* 24 bit and Vista icons can be opened and saved.
+
+## Digital Photography
+
+### Fullscreen Editing
+
+The fullscreen mode has been improved to not only allow getting a full scale preview of the artwork, but
also allow comfortable editing. The artist has maximum screen estate available while all functionality is
quickly accessible by pressing the Tab key (toggles visibility of all docks) when working fullscreen.
+
+Whether painting or touching up photos, fullscreen editing keeps all the distracting elements out of sight
on a key press. It's like observing stars in a field as opposed to a light-polluted city.
+
+### Color Management and Soft-proofing
+
+<figure>
+<img src="{filename}images/2.4-color-management.png" alt="Color Management"/>
+</figure>
+
+GIMP now provides full support for color profiles allowing precise color modification throughout the whole
'digital darkroom' process.
+
+For more information, see [color management](gimp-2.4-cm.html).
+
+### New Crop Tool
+
+<figure>
+<img src="{filename}images/2.4-crop-tool.png" alt="Crop Tool"/>
+</figure>
+
+Just like the selection tools, the new crop tool has been enhanced since the last release. The resize
handles actually resize the crop rectangle instead of providing both resize and move functionality. The tool
behaves more naturally and consistently with other GIMP tools.
+
+To move, simply drag the rectangle clicking within the area. Resizing is possible in one or two axes at the
same time dragging the handle-bars on the sides and corners. The outside area is darkened with a nice
passepartout effect to better get the idea of how the final crop will look like.
+
+### Improved Printing
+
+<figure>
+<img src="{filename}images/gimp-24-print-dark.png" alt="Improved Printing"/>
+</figure>
+
+Printing has been largely improved. GIMP makes use of the advancements in the gtk+ printing API so that you
can control all aspects of the printout with an easy to understand interface and immediate preview.
+
+### Red Eye Removal
+
+While numerous red-eye workflows exist already, GIMP now features a very convenient auto-magic filter to
remove red eye from your shots.
+
+### Perspective Clone
+
+<figure>
+<img src="{filename}images/2.4-video-perspective.jpg" alt="Perspective Clone Demo"/>
+</figure>
+
+A common task in image editing is to copy pixels from somewhere in an image to somewhere else. Traditionally
this has been done using the Clone Tool. To make it easy to perform cloning while taking the perspective of
an image into account, a new Perspective Clone Tool has been added to GIMP.
+
+<small>All video demonstrations can also be viewed or downloaded from a [separate
page](gimp-2.4-videos.html).</small>
+
+### Lens Distortion
+
+<figure>
+<img src="{filename}images/2.4-video-lens.jpg" alt="Lens Distortion Demo"/>
+</figure>
+
+A very common problem exposing itself especially when using cheaper lenses or expensive lenses pushed to
their limits, is barrel distortion and vignetting. Luckily GIMP provides a brand new filter to compensate for
both problems. Saving photographer's pocket is our mission!
+
+<small>All video demonstrations can also be viewed or downloaded from a [separate
page](gimp-2.4-videos.html).</small>
+
+### JPEG quality
+
+When editing photographs, it is usually better to work with a lossless image format and only save the final
result as JPEG. But if you have to work with JPEG images as input, then a new option allows you to use the
same compression parameters as the original image when you re-save it.
+
+## Various Other Improvements
+
+In addition to all the above, GIMP has been improved in other areas. For instance, better status information
and some hints have been added in the status bar of the image windows. You can easily discover new features
and new shortcuts by trying the various keys and modifiers that are suggested while you are using the tools.
+
+<figure>
+<img src="{filename}images/2.4-statusbar-tips.png" alt="Hints in the status bar"/>
+</figure>
+
+A number of changes has gone into plug-ins and scripts. First of all, a new preview widget for plug-ins was
introduced. Now you can zoom in and out using the mouse wheel or +/- buttons in plug-in dialogs and pan
around.
+
+Several plug-ins like Gaussian Blur, Selective Gaussian Blur and Value Invert have received special
attention with regards to speed of processing and work significantly faster now. Additionally, the Motion
Blur filter can blur outwards now, and its quality has also improved.
+
+You will also note that the new Screenshot plug-in offers more sophisticated options and is far easier to
use.
+
+<figure>
+<img src="{filename}images/2.4-screenshot-plugin.png" alt="Screenshot plug-in"/>
+</figure>
+
+GIMP 2.4 features a brand new Scheme interpreter that provides better debugging, handles UTF-8 coded
characters and strings, has regex based pattern matching and many more useful features that power users were
requesting. The latter will be pleased to find out that plug-ins and scripts can register menu entries in the
<Brushes>, <Gradients>, <Palettes>, <Patterns> and <Fonts> menus now. Also, a
fair amount of new scripts were added: reversing the order of layers, sorting color palettes etc. A few
scripts that were using incorrect or deprecated constructs may have to be updated. A [Script-Fu migration
guide](/docs/script-fu-update.html) lists the most common errors and how to fix them.
+
diff --git a/content/release-notes/gimp-2.5.md b/content/release-notes/gimp-2.5.md
index f43844d..eb87af4 100644
--- a/content/release-notes/gimp-2.5.md
+++ b/content/release-notes/gimp-2.5.md
@@ -1,81 +1,81 @@
-Title: GIMP 2.5 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-
-This is an unstable development version of the **GNU Image Manipulation Program**. Please realize that this
is just a snapshot of the development tree. We are working hard towards GIMP 2.6, the next stable release.
GIMP 2.5 is in no way a final product. A lot of new features are incomplete and some things may even be
completely broken. If you need to get work done, please use the stable version, GIMP 2.4.
-
-## What's New in GIMP 2.5
-
-### UI changes
-
-GIMP has several UI changes in this version, many of them offering relief to long standing issues.
-
-A major change is the appearance of an "empty image window". This window is a placeholder where your image
will eventually open, also a drop zone into which you can drag-and-drop your file and start working. You will
also notice that the Toolbox menu is gone: it has been merged into the image window menu. Toolbox and docks
are treated as utility windows, so if your window manager supports it, then your problems with docks and
toolbox getting lost under other windows are over. Unfortunately, at this moment utility window hints only
work correctly in metacity, the Gnome default window manager.
-
-There are also a couple of nice usability changes concerning docks. Have you ever been aggravated to no end
because you accidentally closed your neatly set up dock and had to build it from scratch again? That is no
longer a source of stress, because the Window menu now holds a list of recently closed docks, and just one
click can bring your carefully constructed setup back to you. Another common annoyance is incidentally
dragging tabs out of docks. Now GIMP lets you lock your tabs to make sure that does not happen.
-
-One of the most desired changes over the years has been "overpanning": the ability to pull those pesky
corners, that are so hard to reach with just the right point of the brush, to the front and center. This is
now finally available. Panning does not have to stop when the image edge reaches the window edge. You can go
on panning, and position the area you work on where it is comfortable for you.
-
-### Improved Freehand select tool
-
-The freehand select tool has been enhanced to support polygon segments in selections. Selection segments are
all independently adjustable. This significant improvement fills the need for making polygonal selections
without creating yet another tool.
-
-### Improved help system
-
-Ever been bothered by the fact that you need a single page of help but can't get it because you don't have
the whole large help docs package installed? Despair no more. GIMP now supports online help. All you need is
a network connection and that particular page opens in your browser when you ask for help anywhere in GIMP.
-
-### Brush dynamics
-
-Brush dynamics let you map different brush parameters, commonly at least size and opacity, to one or more of
three input dynamics: pressure, velocity and random. Velocity and random are usable with a mouse. The Ink
tool, that supported velocity before, has been overhauled and now handles velocity-dependent painting much
better.
-
-Brush dynamics have enabled a new feature in stroking paths. There is now a check box under the "paint tool"
option, for emulating brush dynamics if you stroke using a paint tool. What this means is that when your
stroke is being painted by GIMP, it tells the brush that its pressure and velocity are varying along the
length of the stroke. Pressure starts with zero, ramps up to full pressure and then ramps down again to no
pressure. Velocity starts from zero and ramps up to full speed by the end of the stroke.
-
-### Preset saving for color tools
-
-Now you can save presets in all color tools for color adjustments you use frequently.
-
-### Under the hood
-
-Most notable of under-the-hood changes are the first steps of [GEGL](http://gegl.org) integration. Right now
the effect on user experience is minimal, but it is an important development for the future. Once GEGL
integration is complete, GIMP will finally get support for higher color depths, more color spaces and
eventually non-destructive editing.
-
-Peeking out from under the hood are subtle differences in the way the UI draws its elements. These changes
are due to internally making use of the Cairo library to draw UI elements. This is visible for example in the
drawing of Layers and Paths docks and Curves dialog.
-
-Please see the [NEWS](https://git.gnome.org/browse/gimp/plain/NEWS?id=GIMP_2_5_0) file for a more detailed
list of changes. [Screenshots](//developer.gimp.org/screenshots.html) of the development version can also be
found there.
-
-## Download
-
-The development snapshots of GIMP can be downloaded as source code from ftp.gimp.org or from one of the
mirrors listed in the [Downloads](/downloads/#mirrors) section.
-
-Distribution of binary packages of the development version is discouraged unless it is made clear that this
is an early development snapshot. Users should be referred to these release notes or similar information.
-
-## Installation
-
-GIMP 2.5 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.4 installation in parallel to GIMP 2.5, you have to choose a separate installation prefix at
compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
-
-You install the new version into a separate prefix, say /opt/gimp-2.5 by passing `--prefix=/opt/gimp-2.5` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.5/bin by setting `PATH=/opt/gimp-2.5/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.5/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.5/lib`. Do not forget to `export`
both variables.
-
-You can use a tiny wrapper script called gimp-2.5 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
-
- #!/bin/sh
-
- PATH=/opt/gimp-2.5/bin:$PATH
- export PATH
- LD_LIBRARY_PATH=/opt/gimp-2.5/lib
- export LD_LIBRARY_PATH
-
- /opt/gimp-2.5/bin/gimp-2.5 "$@"
-
-## Bugs
-
-If you think you found a bug in a development version, please make sure that it hasn't been already
reported. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
-
-* [Open bugs with milestone
2.6](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.6&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [Resolved bugs with milestone
2.6](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.6&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
-
-## Contributing
-
-We need your help to make GIMP 2.6 a success. There's still a lot to do. If you want to join us hacking,
show up in #gimp or introduce yourself on the gimp-developer mailing-list. We are also looking for people to
look after the web-site and update the tutorials. Or you might want to join the [documentation
team](http://docs.gimp.org/).
+Title: GIMP 2.5 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+
+This is an unstable development version of the **GNU Image Manipulation Program**. Please realize that this
is just a snapshot of the development tree. We are working hard towards GIMP 2.6, the next stable release.
GIMP 2.5 is in no way a final product. A lot of new features are incomplete and some things may even be
completely broken. If you need to get work done, please use the stable version, GIMP 2.4.
+
+## What's New in GIMP 2.5
+
+### UI changes
+
+GIMP has several UI changes in this version, many of them offering relief to long standing issues.
+
+A major change is the appearance of an "empty image window". This window is a placeholder where your image
will eventually open, also a drop zone into which you can drag-and-drop your file and start working. You will
also notice that the Toolbox menu is gone: it has been merged into the image window menu. Toolbox and docks
are treated as utility windows, so if your window manager supports it, then your problems with docks and
toolbox getting lost under other windows are over. Unfortunately, at this moment utility window hints only
work correctly in metacity, the Gnome default window manager.
+
+There are also a couple of nice usability changes concerning docks. Have you ever been aggravated to no end
because you accidentally closed your neatly set up dock and had to build it from scratch again? That is no
longer a source of stress, because the Window menu now holds a list of recently closed docks, and just one
click can bring your carefully constructed setup back to you. Another common annoyance is incidentally
dragging tabs out of docks. Now GIMP lets you lock your tabs to make sure that does not happen.
+
+One of the most desired changes over the years has been "overpanning": the ability to pull those pesky
corners, that are so hard to reach with just the right point of the brush, to the front and center. This is
now finally available. Panning does not have to stop when the image edge reaches the window edge. You can go
on panning, and position the area you work on where it is comfortable for you.
+
+### Improved Freehand select tool
+
+The freehand select tool has been enhanced to support polygon segments in selections. Selection segments are
all independently adjustable. This significant improvement fills the need for making polygonal selections
without creating yet another tool.
+
+### Improved help system
+
+Ever been bothered by the fact that you need a single page of help but can't get it because you don't have
the whole large help docs package installed? Despair no more. GIMP now supports online help. All you need is
a network connection and that particular page opens in your browser when you ask for help anywhere in GIMP.
+
+### Brush dynamics
+
+Brush dynamics let you map different brush parameters, commonly at least size and opacity, to one or more of
three input dynamics: pressure, velocity and random. Velocity and random are usable with a mouse. The Ink
tool, that supported velocity before, has been overhauled and now handles velocity-dependent painting much
better.
+
+Brush dynamics have enabled a new feature in stroking paths. There is now a check box under the "paint tool"
option, for emulating brush dynamics if you stroke using a paint tool. What this means is that when your
stroke is being painted by GIMP, it tells the brush that its pressure and velocity are varying along the
length of the stroke. Pressure starts with zero, ramps up to full pressure and then ramps down again to no
pressure. Velocity starts from zero and ramps up to full speed by the end of the stroke.
+
+### Preset saving for color tools
+
+Now you can save presets in all color tools for color adjustments you use frequently.
+
+### Under the hood
+
+Most notable of under-the-hood changes are the first steps of [GEGL](http://gegl.org) integration. Right now
the effect on user experience is minimal, but it is an important development for the future. Once GEGL
integration is complete, GIMP will finally get support for higher color depths, more color spaces and
eventually non-destructive editing.
+
+Peeking out from under the hood are subtle differences in the way the UI draws its elements. These changes
are due to internally making use of the Cairo library to draw UI elements. This is visible for example in the
drawing of Layers and Paths docks and Curves dialog.
+
+Please see the [NEWS](https://git.gnome.org/browse/gimp/plain/NEWS?id=GIMP_2_5_0) file for a more detailed
list of changes. [Screenshots](//developer.gimp.org/screenshots.html) of the development version can also be
found there.
+
+## Download
+
+The development snapshots of GIMP can be downloaded as source code from ftp.gimp.org or from one of the
mirrors listed in the [Downloads](/downloads/#mirrors) section.
+
+Distribution of binary packages of the development version is discouraged unless it is made clear that this
is an early development snapshot. Users should be referred to these release notes or similar information.
+
+## Installation
+
+GIMP 2.5 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.4 installation in parallel to GIMP 2.5, you have to choose a separate installation prefix at
compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
+
+You install the new version into a separate prefix, say /opt/gimp-2.5 by passing `--prefix=/opt/gimp-2.5` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.5/bin by setting `PATH=/opt/gimp-2.5/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.5/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.5/lib`. Do not forget to `export`
both variables.
+
+You can use a tiny wrapper script called gimp-2.5 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
+
+ #!/bin/sh
+
+ PATH=/opt/gimp-2.5/bin:$PATH
+ export PATH
+ LD_LIBRARY_PATH=/opt/gimp-2.5/lib
+ export LD_LIBRARY_PATH
+
+ /opt/gimp-2.5/bin/gimp-2.5 "$@"
+
+## Bugs
+
+If you think you found a bug in a development version, please make sure that it hasn't been already
reported. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
+
+* [Open bugs with milestone
2.6](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.6&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [Resolved bugs with milestone
2.6](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.6&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
+
+## Contributing
+
+We need your help to make GIMP 2.6 a success. There's still a lot to do. If you want to join us hacking,
show up in #gimp or introduce yourself on the gimp-developer mailing-list. We are also looking for people to
look after the web-site and update the tutorials. Or you might want to join the [documentation
team](http://docs.gimp.org/).
diff --git a/content/release-notes/gimp-2.6.md b/content/release-notes/gimp-2.6.md
index f8aec8f..ca1e8db 100644
--- a/content/release-notes/gimp-2.6.md
+++ b/content/release-notes/gimp-2.6.md
@@ -1,194 +1,194 @@
-Title: GIMP 2.6 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-
-## Introduction
-
-GIMP 2.6 is an important release from a development point of view. It features changes to the user interface
addressing some often received complaints, and a tentative integration of GEGL, the graph based image
processing library that will eventually bring high bit-depth and non-destructive editing to GIMP.
-
-## User Interface
-
-### Toolbox Menubar Removed
-
-<figure>
-<img src="{filename}images/2.6-empty-image-window.png" alt="Empty Image Window screenshot"/>
-</figure>
-
-The toolbox menubar has been removed and merged with the image window menubar. To be able to do this a
window called the _empty image window_ has been introduced. It hosts the menubar and keeps the application
instance alive when no images are opened. It also acts as a drag and drop target. When opening the first
image the empty image window is transformed into a normal image window, and when closing the last image, that
window becomes the empty image window.
-
-### Toolbox and Docks are Utility windows
-
-With the empty image window acting as a natural main window, the default window hints for the Toolbox and
Docks have been changed to _Utility window_. This enables window managers to do a much better job of managing
the GIMP windows, including omitting the Toolbox and Docks from the taskbar and ensuring that the Toolbox and
Docks always are above image windows.
-
-### Ability to Pan Beyond Image Border
-
-<figure>
-<img src="{filename}images/2.6-scroll-beyond-border.png" alt="Scroll Beyond Border illustration"/>
-</figure>
-
-It is now possible to pan beyond the image border, making image window navigation much less constrained. It
is no longer a problem to use the edge of a brush on the edge of an image while being zoomed in, and one can
adapt the canvas to any utility windows covering parts of the image window.
-
-### Minor Changes
-
-* Renamed Dialogs menu to Windows.
-* Keep a list of recently closed Docks and allow reopening them.
-* Make opening images in already running GIMP instances work better on Windows.
-* You can now enter the image zoom ratio directly in the status bar.
-* Added support for using online help instead of a locally installed GIMP Help package.
-* Make it possible to lock tabs in docks to prevent accidental moving.
-
-## Tools, Filters & Plug-ins
-
-### Improved Free Select Tool
-
-<figure>
-<img src="{filename}images/2.6-new-free-select-tool.png" alt="New Free Select Tool in action"/>
-</figure>
-
-The freehand select tool has been enhanced to support polygonal selections. It also allows mixing free hand
segments with polygonal segments, editing of existing segments, applying angle-constraints to segments, and
of course the normal selection tool operations like add and subtract. Altoghether this ends up making the
Free Select Tool a very versatile, powerful and easy-to-use selection tool.
-
-### Brush Dynamics
-
-<figure>
-<img src="{filename}images/2.6-brush-dynamics.jpg" alt="Brush Dynamics illustration"/>
-</figure>
-
-Brush dynamics let you map different brush parameters, commonly at least size and opacity, to one or more of
three input dynamics: pressure, velocity and random. Velocity and random are usable with a mouse. The Ink
tool, that supported velocity before, has been overhauled and now handles velocity-dependent painting much
better.
-
-Brush dynamics have enabled a new feature in stroking paths. There is now a check box under the "paint tool"
option, for emulating brush dynamics if you stroke using a paint tool. What this means is that when your
stroke is being painted by GIMP, it tells the brush that its pressure and velocity are varying along the
length of the stroke. Pressure starts with zero, ramps up to full pressure and then ramps down again to no
pressure. Velocity starts from zero and ramps up to full speed by the end of the stroke.
-
-### Minor Changes
-
-<figure>
-<img src="{filename}images/2.6-text-tool-and-rectangle-handles.png" alt="Text Tool bounding box and outside
rectangle handles screenshot"/>
-</figure>
-
-* Added a bounding box for the Text Tool that supports automatic wrapping of text within that bounding box.
-* Move handles for rectangle based tools like Crop and Rectangle Select to the outside of the rectangle
when the rectangle is narrow.
-* Added motion constraints to the Move Tool.
-* Improved event smoothing for paint tools.
-* Mark the center of rectangles while they are moved, and snap the center to grid and rulers.
-* Enable brush scaling for the Smudge tool.
-* Added ability to save presets in all color tools for color adjustments you use frequently.
-* Allow to transfer settings from _Brightness-Contrast_ to _Levels_, and from _Levels_ to _Curves_.
-* Allow changing opacity on transform tool previews.
-* The Screenshot plug-in has been given the ability to capture the mouse cursor (using Xfixes).
-* Display aspect ratio of the Crop and Rectangle Select Tool rectangles in the status bar.
-* Desaturate has been given an on-canvas preview.
-* The Flame plug-in has been extended with 22 new variations.
-* Data file folders like brush folders are searched recursively for files.
-* Replaced the PSD import plug-in with a rewritten version that does what the old version did plus some
other things, for example reading of ICC color profiles.
-
-## Under the Hood
-
-### GEGL
-
-Important progress towards high bit-depth and non-destructive editing in GIMP has been made. Most color
operations in GIMP are now ported to the powerful graph based image processing framework
[GEGL](http://www.gegl.org/), meaning that the internal processing is being done in 32bit floating point
linear light RGBA. By default the legacy 8bit code paths are still used, but a curious user can turn on the
use of GEGL for the color operations with _Colors / Use GEGL_.
-
-<figure>
-<img src="{filename}images/2.6-experimental-gegl-tool.png" alt="Experimental GEGL tool screenshot"/>
-</figure>
-
-In addition to porting color operations to GEGL, an experimental _GEGL Operation_ tool has been added, found
in the _Tools_ menu. It enables applying GEGL operations to an image and it gives on-canvas previews of the
results. The screenshot to the right shows this for a Gaussian Blur.
-
-### Minor Changes
-
-* Ported many widgets to use the 2D graphics library [cairo](http://www.cairographics.org/) for drawing.
See this [comparison](images/gimp-curves-tool-2-4-vs-2-6.png) for an example of how much better this looks.
-
-## Miscellaneous
-
-### Plug-in Development
-
-There are new things for a plug-in developer to enjoy as well. For example, procedures can now give a
detailed error description in case of an error, and the error can be propagated to the user.
-
-GIMP 2.6 also further enhances its scripting abilities. In particular there is now a much richer API for the
creation and manipulation of text layers. Here is a [list of new symbols in GIMP
2.6](//developer.gimp.org/api/2.0/libgimp/libgimp-index-new-in-2-6.html).
-
-### Backwards Compatibility
-
-Script-Fu has undergone some clean up and includes several bug fixes. One important bug fix, for [bug
#508020](https://bugzilla.gnome.org/show_bug.cgi?id=512105), prevents a possible crash of Script-Fu. A side
effect of the fix will break any script which does not provide an initial value for a variable in the binding
portion of a _let_, _let*_, or _letrec_ block.
-
-An initial value for a variable is required as stated in the [R5RS Scheme standard
document](http://www.schemers.org/Documents/Standards/R5RS/r5rs.pdf). The initial value can be provided as a
simple constant, or as the result of a function call. The following examples will illustrate the problem and
show a simple change that will fix a broken script.
-
-This example shows a _let*_ block with incorrect syntax that will no longer work in Script-Fu.
-
- (let* (
- (four (+ 2 2))
- (this-is-wrong)
- )
-
-This example shows a _let*_ block with the correct syntax.
-
- (let* (
- (four (+ 2 2))
- (this-is-correct 0)
- )
-
-### Known Problems
-
-* The _Utility window_ hint is currently only known to work well in the Linux GNOME desktop environment
and on Windows starting with GIMP 2.6.1.
-* Using the Text Tool is currently not an optimal experience. Making it work better is a goal for GIMP 2.8.
-* If you build GIMP yourself and don't have [GVfs](http://en.wikipedia.org/wiki/GVFS) support on your
platform you need to explicitly pass <kbd>--without-gvfs</kbd> to configure, otherwise opening remote files
will not work properly.
-
-### What's Planned
-
-For the interested, here is roughly what is planned for GIMP 2.8, the next stable release:
-
-* Merging Google Summer of Code 2008 projects to trunk, namely on-canvas text editing, tagging of GIMP
resources and Python scripting enhancements.
-* Continue integration of GEGL.
-* And of course many other improvements...
-
-## GIMP 2.6 Screenshots
-
-<figure>
-<a href="../screenshots/gnome-1280x800-fresh-start.jpg"><img
src="{filename}../screenshots/gnome-1280x800-fresh-start.jpg" alt="First GIMP 2.6 startup"/></a>
-<figcaption>
-First startup of GIMP 2.6 on a 1280x800 GNOME desktop.
-</figcaption>
-</figure>
-
-
-<figure>
-<a href="../screenshots/alternative-2-6-ui-layout-example-one.jpg"><img
src="{filename}../screenshots/alternative-2-6-ui-layout-example-one.jpg" alt="Alternative UI example"/></a>
-<figcaption>
-UI layout example: Tool Options moved out of the toolbox.
-</figcaption>
-</figure>
-
-
-<figure>
-<a href="../screenshots/alternative-2-6-ui-layout-example-two.jpg"><img
src="{filename}../screenshots/alternative-2-6-ui-layout-example-two.jpg" alt="Another alternative UI
example"/></a>
-<figcaption>
-UI layout example: Using the image window as a background window.
-</figcaption>
-</figure>
-
-
-<figure>
-<a href="../screenshots/2.6-brush-dynamics-example.jpg"><img
src="{filename}../screenshots/2.6-brush-dynamics-example.jpg" alt="Brush Dynamics at use"/></a>
-<figcaption>
-Demonstrating the kind of effects the new Brush Dynamics can create.
-</figcaption>
-</figure>
-
-
-<figure>
-<a href="../screenshots/on-canvas-preview-of-gaussian-blur-in-2-6.jpg"><img
src="{filename}../screenshots/on-canvas-preview-of-gaussian-blur-in-2-6.jpg" alt="On-canvas Gaussian
Blur"/></a>
-<figcaption>
-Full screenshot of on-canvas preview of Gaussian Blur using the experimental GEGL Operation tool.
-</figcaption>
-</figure>
-
-
-
-## We Hope You Enjoy GIMP 2.6!
-
-<figure markdown="span">
-<img src="{filename}images/2.6-lgm-2008-groupshot.jpg" alt="LGM 2008 shot of the GIMP team"/>
-<figcaption>
-A picture of (mostly) GIMP developers, taken by [Garrett
LeSage](http://www.flickr.com/photos/garrett/2733807768/) at [Libre Graphics Meeting
2008](http://www.libregraphicsmeeting.org/2008/), licenced under
[CC-By](http://creativecommons.org/licenses/by/2.0/deed.en)
-</figcaption>
-</figure>
+Title: GIMP 2.6 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+
+## Introduction
+
+GIMP 2.6 is an important release from a development point of view. It features changes to the user interface
addressing some often received complaints, and a tentative integration of GEGL, the graph based image
processing library that will eventually bring high bit-depth and non-destructive editing to GIMP.
+
+## User Interface
+
+### Toolbox Menubar Removed
+
+<figure>
+<img src="{filename}images/2.6-empty-image-window.png" alt="Empty Image Window screenshot"/>
+</figure>
+
+The toolbox menubar has been removed and merged with the image window menubar. To be able to do this a
window called the _empty image window_ has been introduced. It hosts the menubar and keeps the application
instance alive when no images are opened. It also acts as a drag and drop target. When opening the first
image the empty image window is transformed into a normal image window, and when closing the last image, that
window becomes the empty image window.
+
+### Toolbox and Docks are Utility windows
+
+With the empty image window acting as a natural main window, the default window hints for the Toolbox and
Docks have been changed to _Utility window_. This enables window managers to do a much better job of managing
the GIMP windows, including omitting the Toolbox and Docks from the taskbar and ensuring that the Toolbox and
Docks always are above image windows.
+
+### Ability to Pan Beyond Image Border
+
+<figure>
+<img src="{filename}images/2.6-scroll-beyond-border.png" alt="Scroll Beyond Border illustration"/>
+</figure>
+
+It is now possible to pan beyond the image border, making image window navigation much less constrained. It
is no longer a problem to use the edge of a brush on the edge of an image while being zoomed in, and one can
adapt the canvas to any utility windows covering parts of the image window.
+
+### Minor Changes
+
+* Renamed Dialogs menu to Windows.
+* Keep a list of recently closed Docks and allow reopening them.
+* Make opening images in already running GIMP instances work better on Windows.
+* You can now enter the image zoom ratio directly in the status bar.
+* Added support for using online help instead of a locally installed GIMP Help package.
+* Make it possible to lock tabs in docks to prevent accidental moving.
+
+## Tools, Filters & Plug-ins
+
+### Improved Free Select Tool
+
+<figure>
+<img src="{filename}images/2.6-new-free-select-tool.png" alt="New Free Select Tool in action"/>
+</figure>
+
+The freehand select tool has been enhanced to support polygonal selections. It also allows mixing free hand
segments with polygonal segments, editing of existing segments, applying angle-constraints to segments, and
of course the normal selection tool operations like add and subtract. Altoghether this ends up making the
Free Select Tool a very versatile, powerful and easy-to-use selection tool.
+
+### Brush Dynamics
+
+<figure>
+<img src="{filename}images/2.6-brush-dynamics.jpg" alt="Brush Dynamics illustration"/>
+</figure>
+
+Brush dynamics let you map different brush parameters, commonly at least size and opacity, to one or more of
three input dynamics: pressure, velocity and random. Velocity and random are usable with a mouse. The Ink
tool, that supported velocity before, has been overhauled and now handles velocity-dependent painting much
better.
+
+Brush dynamics have enabled a new feature in stroking paths. There is now a check box under the "paint tool"
option, for emulating brush dynamics if you stroke using a paint tool. What this means is that when your
stroke is being painted by GIMP, it tells the brush that its pressure and velocity are varying along the
length of the stroke. Pressure starts with zero, ramps up to full pressure and then ramps down again to no
pressure. Velocity starts from zero and ramps up to full speed by the end of the stroke.
+
+### Minor Changes
+
+<figure>
+<img src="{filename}images/2.6-text-tool-and-rectangle-handles.png" alt="Text Tool bounding box and outside
rectangle handles screenshot"/>
+</figure>
+
+* Added a bounding box for the Text Tool that supports automatic wrapping of text within that bounding box.
+* Move handles for rectangle based tools like Crop and Rectangle Select to the outside of the rectangle
when the rectangle is narrow.
+* Added motion constraints to the Move Tool.
+* Improved event smoothing for paint tools.
+* Mark the center of rectangles while they are moved, and snap the center to grid and rulers.
+* Enable brush scaling for the Smudge tool.
+* Added ability to save presets in all color tools for color adjustments you use frequently.
+* Allow to transfer settings from _Brightness-Contrast_ to _Levels_, and from _Levels_ to _Curves_.
+* Allow changing opacity on transform tool previews.
+* The Screenshot plug-in has been given the ability to capture the mouse cursor (using Xfixes).
+* Display aspect ratio of the Crop and Rectangle Select Tool rectangles in the status bar.
+* Desaturate has been given an on-canvas preview.
+* The Flame plug-in has been extended with 22 new variations.
+* Data file folders like brush folders are searched recursively for files.
+* Replaced the PSD import plug-in with a rewritten version that does what the old version did plus some
other things, for example reading of ICC color profiles.
+
+## Under the Hood
+
+### GEGL
+
+Important progress towards high bit-depth and non-destructive editing in GIMP has been made. Most color
operations in GIMP are now ported to the powerful graph based image processing framework
[GEGL](http://www.gegl.org/), meaning that the internal processing is being done in 32bit floating point
linear light RGBA. By default the legacy 8bit code paths are still used, but a curious user can turn on the
use of GEGL for the color operations with _Colors / Use GEGL_.
+
+<figure>
+<img src="{filename}images/2.6-experimental-gegl-tool.png" alt="Experimental GEGL tool screenshot"/>
+</figure>
+
+In addition to porting color operations to GEGL, an experimental _GEGL Operation_ tool has been added, found
in the _Tools_ menu. It enables applying GEGL operations to an image and it gives on-canvas previews of the
results. The screenshot to the right shows this for a Gaussian Blur.
+
+### Minor Changes
+
+* Ported many widgets to use the 2D graphics library [cairo](http://www.cairographics.org/) for drawing.
See this [comparison](images/gimp-curves-tool-2-4-vs-2-6.png) for an example of how much better this looks.
+
+## Miscellaneous
+
+### Plug-in Development
+
+There are new things for a plug-in developer to enjoy as well. For example, procedures can now give a
detailed error description in case of an error, and the error can be propagated to the user.
+
+GIMP 2.6 also further enhances its scripting abilities. In particular there is now a much richer API for the
creation and manipulation of text layers. Here is a [list of new symbols in GIMP
2.6](//developer.gimp.org/api/2.0/libgimp/libgimp-index-new-in-2-6.html).
+
+### Backwards Compatibility
+
+Script-Fu has undergone some clean up and includes several bug fixes. One important bug fix, for [bug
#508020](https://bugzilla.gnome.org/show_bug.cgi?id=512105), prevents a possible crash of Script-Fu. A side
effect of the fix will break any script which does not provide an initial value for a variable in the binding
portion of a _let_, _let*_, or _letrec_ block.
+
+An initial value for a variable is required as stated in the [R5RS Scheme standard
document](http://www.schemers.org/Documents/Standards/R5RS/r5rs.pdf). The initial value can be provided as a
simple constant, or as the result of a function call. The following examples will illustrate the problem and
show a simple change that will fix a broken script.
+
+This example shows a _let*_ block with incorrect syntax that will no longer work in Script-Fu.
+
+ (let* (
+ (four (+ 2 2))
+ (this-is-wrong)
+ )
+
+This example shows a _let*_ block with the correct syntax.
+
+ (let* (
+ (four (+ 2 2))
+ (this-is-correct 0)
+ )
+
+### Known Problems
+
+* The _Utility window_ hint is currently only known to work well in the Linux GNOME desktop environment
and on Windows starting with GIMP 2.6.1.
+* Using the Text Tool is currently not an optimal experience. Making it work better is a goal for GIMP 2.8.
+* If you build GIMP yourself and don't have [GVfs](http://en.wikipedia.org/wiki/GVFS) support on your
platform you need to explicitly pass <kbd>--without-gvfs</kbd> to configure, otherwise opening remote files
will not work properly.
+
+### What's Planned
+
+For the interested, here is roughly what is planned for GIMP 2.8, the next stable release:
+
+* Merging Google Summer of Code 2008 projects to trunk, namely on-canvas text editing, tagging of GIMP
resources and Python scripting enhancements.
+* Continue integration of GEGL.
+* And of course many other improvements...
+
+## GIMP 2.6 Screenshots
+
+<figure>
+<a href="../screenshots/gnome-1280x800-fresh-start.jpg"><img
src="{filename}../screenshots/gnome-1280x800-fresh-start.jpg" alt="First GIMP 2.6 startup"/></a>
+<figcaption>
+First startup of GIMP 2.6 on a 1280x800 GNOME desktop.
+</figcaption>
+</figure>
+
+
+<figure>
+<a href="../screenshots/alternative-2-6-ui-layout-example-one.jpg"><img
src="{filename}../screenshots/alternative-2-6-ui-layout-example-one.jpg" alt="Alternative UI example"/></a>
+<figcaption>
+UI layout example: Tool Options moved out of the toolbox.
+</figcaption>
+</figure>
+
+
+<figure>
+<a href="../screenshots/alternative-2-6-ui-layout-example-two.jpg"><img
src="{filename}../screenshots/alternative-2-6-ui-layout-example-two.jpg" alt="Another alternative UI
example"/></a>
+<figcaption>
+UI layout example: Using the image window as a background window.
+</figcaption>
+</figure>
+
+
+<figure>
+<a href="../screenshots/2.6-brush-dynamics-example.jpg"><img
src="{filename}../screenshots/2.6-brush-dynamics-example.jpg" alt="Brush Dynamics at use"/></a>
+<figcaption>
+Demonstrating the kind of effects the new Brush Dynamics can create.
+</figcaption>
+</figure>
+
+
+<figure>
+<a href="../screenshots/on-canvas-preview-of-gaussian-blur-in-2-6.jpg"><img
src="{filename}../screenshots/on-canvas-preview-of-gaussian-blur-in-2-6.jpg" alt="On-canvas Gaussian
Blur"/></a>
+<figcaption>
+Full screenshot of on-canvas preview of Gaussian Blur using the experimental GEGL Operation tool.
+</figcaption>
+</figure>
+
+
+
+## We Hope You Enjoy GIMP 2.6!
+
+<figure markdown="span">
+<img src="{filename}images/2.6-lgm-2008-groupshot.jpg" alt="LGM 2008 shot of the GIMP team"/>
+<figcaption>
+A picture of (mostly) GIMP developers, taken by [Garrett
LeSage](http://www.flickr.com/photos/garrett/2733807768/) at [Libre Graphics Meeting
2008](http://www.libregraphicsmeeting.org/2008/), licenced under
[CC-By](http://creativecommons.org/licenses/by/2.0/deed.en)
+</figcaption>
+</figure>
diff --git a/content/release-notes/gimp-2.7.md b/content/release-notes/gimp-2.7.md
index a3c75f3..eda1fdf 100644
--- a/content/release-notes/gimp-2.7.md
+++ b/content/release-notes/gimp-2.7.md
@@ -1,284 +1,284 @@
-Title: GIMP 2.7 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-This is an unstable development version of the **GNU Image Manipulation Program**. Please realize that this
is just a snapshot of the development tree. We are working hard towards GIMP 2.8, the next stable release.
GIMP 2.7 is in no way a final product. A lot of new features are incomplete and some things may even be
completely broken. If you need to get work done, please use the stable version, GIMP 2.6.
-
-## Introduction
-
-GIMP 2.7 is the result of three years of hard work and collaborative development. This version of GIMP is
equipped with a wealth of new features, including some highly requested ones. Keep reading to find out
exactly what GIMP 2.7 has to offer you in areas such as the user interface, tools, and plug-ins.
-
-## User Interface
-
-### Single-Window Mode
-
-<figure>
-<img src="{filename}images/2.8-single-window-mode.png" alt="Single-window mode screenshot" width="300"
height="200" />
-</figure>
-
-GIMP 2.7 introduces an optional single-window mode. You can toggle between the default multi-window mode and
the new single-window mode through the _Single-window mode_ checkbox in the _Windows_ menu. In single-window
mode, GIMP will put dockable dialogs and images in a single, tabbed image window. The single-window mode
setting is of course preserved if you quit and start GIMP again. Single-window mode removes the necessity for
users of having to deal with multiple windows.
-**Developers:** Martin Nordholts, Michael Natterer
-**Interaction Architect:** Peter Sikking
-
-### Multi-Column Dock Windows
-
-<figure>
-<img src="{filename}images/2.8-multi-column-dock-windows.png" alt="Multi-column dock windows screenshot" />
-</figure>
-
-GIMP 2.7 allows dockable dialogs in a dock window to be placed in multiple columns. To create a new column
in a dock window, drag and drop a dockable dialog on the vertical edges of the dock window. This is an
appealing feature for multi-monitor users where one screen can have a big dock window with all the dialogs
and the tools, while all images are on other displays.
-**Developer:** Martin Nordholts
-**Interaction Architect:** Peter Sikking
-
-### More Screen Real Estate For Dockable Dialogs
-
-<figure>
-<img src="{filename}images/2.8-removed-docking-bars.png" alt="Removed docking bars screenshot" />
-</figure>
-
-The docking bars have been removed and replaced with overlaid highlights. The dockable drag handle has been
removed and the dockable menu button has been moved up to the tabs. A new Automatic tab style has been added
which makes dockable tabs use the available space.
-**Developer:** Martin Nordholts
-
-### Save And Export
-
-<figure>
-<img src="{filename}images/2.8-save-and-export.png" alt="Save and export screenshot" />
-</figure>
-
-A rather big conceptual change is that saving and exporting images now are clearly separated activities.
Saving an image can only be done in the XCF format which is GIMP's native file format, able to save all kinds
of information necessary for works in progress.
-
-To export into other formats _File->Export..._ needs to be used. This distinction makes it clearer if all
available information is stored in a file, or not. There are some optimizations for alternative workflows
such as opening a jpg, polishing it, and quickly exporting back to the original file. This conceptual change
has also allowed us to get rid of the annoying dialogs that warned about the flatting of images when saving
to non-layered formats.
-**Developer:** Martin Nordholts
-**Interaction Architect:** Peter Sikking
-
-### Layer Groups
-
-<figure>
-<img src="{filename}images/2.8-layer-groups.png" alt="Layer groups screenshot" />
-</figure>
-
-For complex compositions, a flat layer structure is very limiting. GIMP 2.7 lets users organize their
compositions better through the introduction of layer groups which allow layers to be organized in tree-like
structures. Layer groups are fully scriptable through the GIMP plug-in API.
-**Developer:** Michael Natterer
-
-### Tools Drawn With Cairo
-
-<figure>
-<img src="{filename}images/2.8-tools-drawn-with-cairo.png" alt="Tools drawn with cairo screenshot" />
-</figure>
-
-All tools rendering on canvas have been ported to Cairo to provide smooth antialiased graphics and make
GIMP's look and feel match modern users expectations. All but a few plug-ins have been ported over to Cairo
as well. Additionally all tools now use an on-canvas progress indicator instead of the one in the statusbar.
-**Developer:** Michael Natterer
-
-### On-Canvas Text Editing
-
-<figure>
-<img src="{filename}images/2.8-on-canvas-text-editing.png" alt="On-canvas text editing screenshot" />
-</figure>
-
-Text editing with the Text Tool is now performed on-canvas instead of in a separate window. The editing
on-canvas is rather sophisticated: apart from the usual text formatting features like font family, style and
size selectors you get numeric control over baseline offset and kerning, as well as the ability to change
text color for a selection. You can also use a combination of Alt and arrow keys to change baseline offset
and kerning. This feature was originally developed during Google Summer of Code 2008 and heavily improved
since.
-**Developers:** Daniel Eddeland, Michael Natterer
-
-### Keyboard Shortcut Changes
-
-Since the keyboard shortcuts Ctrl+E and Ctrl+Shift+E have been repurposed for the image export mechanisms,
new keyboard shortcuts have been setup for 'Shrink Wrap' and 'Fit in Window', namely Ctrl+J and Ctrl+Shift+J
respectively.
-**Developer:** Martin Nordholts
-
-### Simple Math In Size Entries
-
-<figure>
-<img src="{filename}images/2.8-math-in-size-entries.png" alt="Math in size entries screenshot" />
-</figure>
-
-Enhancements have also been made to the size entry widget, which is used for inputting most of the x, y,
width, height parameters. For example, in the scale dialog it is now possible to write '50%' in the Width
field to scale the image to 50% of the width. Expressions such as '30in + 40px' and '4 \* 5.4in' work, too.
-**Developer:** Fredrik Alströmer
-
-### Minor Changes
-
-* Added 'Windows→Hide docks' menu item that does what 'Tab' does and also displays its state, which is now
persistent across sessions, too.
-* Added infrastructure allowing to embed user interface elements on the canvas. This is currently used for
text styles in the text tool, and (experimentally) when a color correction tool is invoked while the canvas
is in full-screen mode.
-* To make dock window titles manageable, only show the active dockable in the dock window title.
-* The layer modes have been rearranged into more logical and useful groups based on the effect they have
on compositing of a layer. Layer modes that make the composite lighter are in one group, layer modes that
make the composite darker in another group, and so forth.
-* You can now Alt+Click on layers in the Layers dialog to create a selection from it. Add, subtract and
intersect modifiers Ctrl, Shift and Ctrl+Shift keys work too. This makes it easy to compose contents of a
layer based on the contents of other layers, without detours.
-* New docks are created at the pointer position.
-* Removed Toolbox from list of Recently Closed Docks, handle that directly in the Windows menu.
-* Allow closing the toolbox without closing the whole application.
-* Default to non-fixed-aspect in Canvas Size dialog.
-* In the Preferences dialog, only have one setting for the window hint for both the toolbox and the docks.
-* Support arbitrary affine transforms of brushes.
-* Got rid of the Tools dockable and move toolbox configuration to Preferences.
-* A question that often arises is how to change the UI language in GIMP, which has traditionally been a
bit cumbersome. Not any longer, it is now possible to change the language in Preferences.
-* Added 'Lock content' button to the layers, channels and paths dialogs, made the lock buttons more
compact.
-* Allow renaming list items with F2.
-* Allow binding arbitrary actions to extra mouse buttons.
-
-**Developers:** Michael Natterer, Martin Nordholts, Alexander Jones, Alexia Death, Sven Neumann
-
-## Tools & Plug-ins
-
-### Brush System Improvements
-
-<figure>
-<img src="{filename}images/2.8-brush-system-improvements.png" alt="Brush system improvements screenshot" />
-</figure>
-
-The brush dynamics engine has been expanded considerably, making almost all aspects of the brush engine
drivable by a multitude of inputs, all of them configurable with their own response curve.
-
-Because of the expansion, dynamics were separated from tool options and converted into a resource in their
own right. The Google Summer of Code 2009 Advanced GUI for Brush Dynamics project was the start of its
development.
-**Developers:** Alexia Death, Michael Natterer, Zhenfeng Zhao
-
-### Tool Preset Improvements
-
-You can now save existing state of any tool as a preset and give it a meaningful name. The presets are
accessible from a new Tool Presets dockable dialog and additionally can be tagged so that you can easily
manage a lot of presets.
-
-This new feature completely replaces the previously existing tool presets system to a new level of
accessibility. It also makes it possible to distribute tool presets just like any other resource because each
preset is saved as an individual file.
-**Developers:** Michael Natterer, Alexia Death
-
-### Cage Transform Tool
-
-<figure>
-<img src="{filename}images/2.8-cage-transform-tool.png" alt="Cage transform tool screenshot" />
-</figure>
-
-A completely new _Cage transform_ tool has been added thanks to the excellent work of one of our Google
Summer of Code 2010 students. The tool implements an innovative approach to free transformation and makes it
possible to easily warp parts of objects using an adjustable user-defined polygonal frame.
-**Developer:** Michael Muré
-
-### File Plug-Ins
-
-A plug-in for loading JPEG2000 images has been added, as well as plug-ins for X11 Mouse Cursor files and
fundamental OpenRaster (.ora) import and export support. Added RGB565 support to the csource plug-in.
-**Developers:** Aurimas Juška, Takeshi Matsuyama
-
-A Cairo based PDF exporter was implemented. While being somewhat simplistic the exporter saves text,
embedding fonts into the final PDF file, and attempts to convert all flat filled areas to vector objects.
-**Developer:** Barak Itkin
-
-Last, but not least, a Web-page plug-in was added to render any web page into an image using Webkit.
-**Developer:** Mukund Sivaraman
-
-### For Tablet Users
-
-<figure>
-<img src="{filename}images/2.8-for-stylus-users.png" alt="For stylus users screenshot" />
-</figure>
-
-A new experimental widget was added to meet the requirements of graphic tablets users. The widget combines a
slider, a label and a numeric value control which simplifies adjusting a value using a stylus, better
visualizes the current value and provides a more compact UI. It is now used in the Tools Options dockable
dialog for opacity control and most options of brush based tools.
-
-Another useful feature for users of advanced input devices such as graphic tablets is a completely new
dialog for input device configuration which allows configuring per-device pressure curves to compensate for
hardware differences and personal per-pen preferences.
-
-People with Intuos tablets and either Artpen or Airbrush styluses will be glad to find that Airbrush wheel
and Artpen rotation are available for driving dynamics via the 'Wheel' input.
-**Developers:** Michael Natterer, Alexia Death
-
-### Resource Tagging
-
-<figure>
-<img src="{filename}images/2.8-resource-tagging-brushes.png" alt="Resource tagging screenshot with brushes"
/>
-</figure>
-
-It is now possible to tag GIMP resources such as brushes and patterns to group them. The tagging is
performed from the respective dockables e.g. the _Brushes_ dockable, and it is possible to filter resources
based on these tags.
-
-The tags are saved to an XML file, external to the data files themselves. It is possible to tag multiple
resources simultaneously in the UI, but currently only while being viewed as a list. This feature was
developed during Google Summer of Code 2008\.
-**Developer:** Aurimas Juška
-**Interaction Architect:** Peter Sikking
-
-### Resources
-
-We have started overhauling the default set of resources and in this version there have been some changes to
the default set of brushes. The silly 'Untitled' title has been removed from unnamed palette entries. A
wholly new set of brushes for painting has been added and makes use of the new tagging system.
-**Developer:** Martin Nordholts
-**Artists:** Johannes Engelhardt, Ramón Miranda, Guillermo Espertino
-
-### Minor Changes
-
-* Allow specifying the written language in the Text Tool. This helps with choosing an appropriate font, or
appropriate glyphs for the selected language.
-* Moved 'Text along path' from tool options to the text context menu.
-* Add diagonal guides to the Crop Tool.
-* Support rotating brushes.
-* The Smooth Stroke feature from GIMP Painter was ported to GIMP.
-* Added 'Rule of fifths' crop guide overlay.
-* Added an icon for the Desaturate tool.
-* Support loading 16bit (RGB565) raw data.
-* Added palette exporter for CSS, PHP, Python, txt and Java, accessed through the palette context menu.
-* Support printing crop marks for images.
-* Made the Pointer dockable show information about selection position and size.
-* Replaced the brush scale control in tool options by a brush size one that works in pixels, and does the
right thing when the brush changes.
-* Improved the Free Select Tool on-canvas feedback.
-* Made it possible to use GEGL for scaling images.
-
-**Developers:** Sven Neumann, Michael Natterer, Tim Jedlicka, Alexia Death, Nelson A. de Oliveira, Jakub
Steiner, Nicholas Doyle, Barak Itkin, Martin Nordholts
-
-## Miscellaneous
-
-### Plug-in Development
-
-GIMP 2.8 also further enhances its scripting abilities. For example, API changes to support layer groups
have been made. Here is a [list of new symbols in GIMP
2.8](//developer.gimp.org/api/2.0/libgimp/libgimp-index-new-in-2-8.html).
-
-### API Changes
-
-A lot of GIMP APIs have been refactored to simplify developing new scripts.
-
-### License
-
-The GIMP license has been changed to (L)GPLv3+.
-
-### GEGL
-
-The projection code which composes a single image from layers has been ported to GEGL. This includes the
layer modes, as well as support for layer groups. Also, preparations have been made for better and more
intuitive handling of the floating selection. **Developers:** Michael Natterer, Martin Nordholts
-
-### Roadmap
-
-The GIMP developers now maintain a roadmap for GIMP development found here:
[http://wiki.gimp.org/index.php/Roadmap](http://wiki.gimp.org/index.php/Roadmap)
-
-## GIMP 2.7 Screenshots
-
-<figure>
-<img src="{filename}../screenshots/1280x800-fresh-start.jpg" alt="First GIMP 2.8 startup" />
-<figcaption>
-First startup of GIMP 2.8 on a 1280x800 desktop.
-</figcaption>
-</figure>
-
-
-</div>
-
-## Known Regressions
-
-GIMP 2.8 relies on a newer version of GTK+2 that unfortunately has partially broken support for graphics
tablets such as Wacom. If your graphic tablet doesn't work in GIMP 2.8 as it should, we recommend downgrading
to 2.6 until we release GIMP 3.0 that relies on GTK+3 which has fully functional support for advanced input
devices.
-
-To address the needs to migrate from the old tools presets system to the new one we provide a
[script](http://wiki.gimp.org/index.php/Mindstorm:Preset_converter) in Python. However, the old tools presets
are not 100% convertible to the new tool presets. For instance, brush scale from 2.6 can't be converted to
brush size in 2.8.
-
-## Download
-
-The development snapshots of GIMP can be downloaded as source code from ftp.gimp.org or from one of the
mirrors listed in the [Downloads](/downloads/#mirrors) section.
-
-Distribution of binary packages of the development version is discouraged unless it is made clear that this
is an early development snapshot. Users should be referred to these release notes or similar information.
-
-## Installation
-
-GIMP 2.7 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.6 installation in parallel to GIMP 2.7, you have to choose a separate installation prefix at
compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
-
-Also, do **not** install GIMP 2.7 to /usr/local because on most systems, its libraries would override the
libraries of a stable GIMP 2.6 installed into /usr, breaking your distribution-installed GIMP from slightly
to completely. The same applies to any prefix your system uses for the purpose or overriding things in
/usr/lib.
-
-You install the new version into a separate prefix, say /opt/gimp-2.7 by passing `--prefix=/opt/gimp-2.7` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.7/bin by setting `PATH=/opt/gimp-2.7/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.7/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.7/lib`. Do not forget to `export`
both variables.
-
-You can use a tiny wrapper script called gimp-2.7 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
-
- #!/bin/sh
-
- PATH=/opt/gimp-2.7/bin:$PATH
- export PATH
- LD_LIBRARY_PATH=/opt/gimp-2.7/lib
- export LD_LIBRARY_PATH
-
- /opt/gimp-2.7/bin/gimp-2.7 "$@"
-
-## Bugs
-
-If you think you found a bug in a development version, please make sure that it hasn't been already
reported. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
-
-* [Open bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [Resolved bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
-
-## Contributing
-
-We need your help to make GIMP 2.8 a success. If you want to join us hacking, show up in #gimp or introduce
yourself on the gimp-developer mailing-list. We are also looking for people to look after the web-site and
update the tutorials. Or you might want to join the [documentation team](http://docs.gimp.org/).
-
+Title: GIMP 2.7 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+This is an unstable development version of the **GNU Image Manipulation Program**. Please realize that this
is just a snapshot of the development tree. We are working hard towards GIMP 2.8, the next stable release.
GIMP 2.7 is in no way a final product. A lot of new features are incomplete and some things may even be
completely broken. If you need to get work done, please use the stable version, GIMP 2.6.
+
+## Introduction
+
+GIMP 2.7 is the result of three years of hard work and collaborative development. This version of GIMP is
equipped with a wealth of new features, including some highly requested ones. Keep reading to find out
exactly what GIMP 2.7 has to offer you in areas such as the user interface, tools, and plug-ins.
+
+## User Interface
+
+### Single-Window Mode
+
+<figure>
+<img src="{filename}images/2.8-single-window-mode.png" alt="Single-window mode screenshot" width="300"
height="200" />
+</figure>
+
+GIMP 2.7 introduces an optional single-window mode. You can toggle between the default multi-window mode and
the new single-window mode through the _Single-window mode_ checkbox in the _Windows_ menu. In single-window
mode, GIMP will put dockable dialogs and images in a single, tabbed image window. The single-window mode
setting is of course preserved if you quit and start GIMP again. Single-window mode removes the necessity for
users of having to deal with multiple windows.
+**Developers:** Martin Nordholts, Michael Natterer
+**Interaction Architect:** Peter Sikking
+
+### Multi-Column Dock Windows
+
+<figure>
+<img src="{filename}images/2.8-multi-column-dock-windows.png" alt="Multi-column dock windows screenshot" />
+</figure>
+
+GIMP 2.7 allows dockable dialogs in a dock window to be placed in multiple columns. To create a new column
in a dock window, drag and drop a dockable dialog on the vertical edges of the dock window. This is an
appealing feature for multi-monitor users where one screen can have a big dock window with all the dialogs
and the tools, while all images are on other displays.
+**Developer:** Martin Nordholts
+**Interaction Architect:** Peter Sikking
+
+### More Screen Real Estate For Dockable Dialogs
+
+<figure>
+<img src="{filename}images/2.8-removed-docking-bars.png" alt="Removed docking bars screenshot" />
+</figure>
+
+The docking bars have been removed and replaced with overlaid highlights. The dockable drag handle has been
removed and the dockable menu button has been moved up to the tabs. A new Automatic tab style has been added
which makes dockable tabs use the available space.
+**Developer:** Martin Nordholts
+
+### Save And Export
+
+<figure>
+<img src="{filename}images/2.8-save-and-export.png" alt="Save and export screenshot" />
+</figure>
+
+A rather big conceptual change is that saving and exporting images now are clearly separated activities.
Saving an image can only be done in the XCF format which is GIMP's native file format, able to save all kinds
of information necessary for works in progress.
+
+To export into other formats _File->Export..._ needs to be used. This distinction makes it clearer if all
available information is stored in a file, or not. There are some optimizations for alternative workflows
such as opening a jpg, polishing it, and quickly exporting back to the original file. This conceptual change
has also allowed us to get rid of the annoying dialogs that warned about the flatting of images when saving
to non-layered formats.
+**Developer:** Martin Nordholts
+**Interaction Architect:** Peter Sikking
+
+### Layer Groups
+
+<figure>
+<img src="{filename}images/2.8-layer-groups.png" alt="Layer groups screenshot" />
+</figure>
+
+For complex compositions, a flat layer structure is very limiting. GIMP 2.7 lets users organize their
compositions better through the introduction of layer groups which allow layers to be organized in tree-like
structures. Layer groups are fully scriptable through the GIMP plug-in API.
+**Developer:** Michael Natterer
+
+### Tools Drawn With Cairo
+
+<figure>
+<img src="{filename}images/2.8-tools-drawn-with-cairo.png" alt="Tools drawn with cairo screenshot" />
+</figure>
+
+All tools rendering on canvas have been ported to Cairo to provide smooth antialiased graphics and make
GIMP's look and feel match modern users expectations. All but a few plug-ins have been ported over to Cairo
as well. Additionally all tools now use an on-canvas progress indicator instead of the one in the statusbar.
+**Developer:** Michael Natterer
+
+### On-Canvas Text Editing
+
+<figure>
+<img src="{filename}images/2.8-on-canvas-text-editing.png" alt="On-canvas text editing screenshot" />
+</figure>
+
+Text editing with the Text Tool is now performed on-canvas instead of in a separate window. The editing
on-canvas is rather sophisticated: apart from the usual text formatting features like font family, style and
size selectors you get numeric control over baseline offset and kerning, as well as the ability to change
text color for a selection. You can also use a combination of Alt and arrow keys to change baseline offset
and kerning. This feature was originally developed during Google Summer of Code 2008 and heavily improved
since.
+**Developers:** Daniel Eddeland, Michael Natterer
+
+### Keyboard Shortcut Changes
+
+Since the keyboard shortcuts Ctrl+E and Ctrl+Shift+E have been repurposed for the image export mechanisms,
new keyboard shortcuts have been setup for 'Shrink Wrap' and 'Fit in Window', namely Ctrl+J and Ctrl+Shift+J
respectively.
+**Developer:** Martin Nordholts
+
+### Simple Math In Size Entries
+
+<figure>
+<img src="{filename}images/2.8-math-in-size-entries.png" alt="Math in size entries screenshot" />
+</figure>
+
+Enhancements have also been made to the size entry widget, which is used for inputting most of the x, y,
width, height parameters. For example, in the scale dialog it is now possible to write '50%' in the Width
field to scale the image to 50% of the width. Expressions such as '30in + 40px' and '4 \* 5.4in' work, too.
+**Developer:** Fredrik Alströmer
+
+### Minor Changes
+
+* Added 'Windows→Hide docks' menu item that does what 'Tab' does and also displays its state, which is now
persistent across sessions, too.
+* Added infrastructure allowing to embed user interface elements on the canvas. This is currently used for
text styles in the text tool, and (experimentally) when a color correction tool is invoked while the canvas
is in full-screen mode.
+* To make dock window titles manageable, only show the active dockable in the dock window title.
+* The layer modes have been rearranged into more logical and useful groups based on the effect they have
on compositing of a layer. Layer modes that make the composite lighter are in one group, layer modes that
make the composite darker in another group, and so forth.
+* You can now Alt+Click on layers in the Layers dialog to create a selection from it. Add, subtract and
intersect modifiers Ctrl, Shift and Ctrl+Shift keys work too. This makes it easy to compose contents of a
layer based on the contents of other layers, without detours.
+* New docks are created at the pointer position.
+* Removed Toolbox from list of Recently Closed Docks, handle that directly in the Windows menu.
+* Allow closing the toolbox without closing the whole application.
+* Default to non-fixed-aspect in Canvas Size dialog.
+* In the Preferences dialog, only have one setting for the window hint for both the toolbox and the docks.
+* Support arbitrary affine transforms of brushes.
+* Got rid of the Tools dockable and move toolbox configuration to Preferences.
+* A question that often arises is how to change the UI language in GIMP, which has traditionally been a
bit cumbersome. Not any longer, it is now possible to change the language in Preferences.
+* Added 'Lock content' button to the layers, channels and paths dialogs, made the lock buttons more
compact.
+* Allow renaming list items with F2.
+* Allow binding arbitrary actions to extra mouse buttons.
+
+**Developers:** Michael Natterer, Martin Nordholts, Alexander Jones, Alexia Death, Sven Neumann
+
+## Tools & Plug-ins
+
+### Brush System Improvements
+
+<figure>
+<img src="{filename}images/2.8-brush-system-improvements.png" alt="Brush system improvements screenshot" />
+</figure>
+
+The brush dynamics engine has been expanded considerably, making almost all aspects of the brush engine
drivable by a multitude of inputs, all of them configurable with their own response curve.
+
+Because of the expansion, dynamics were separated from tool options and converted into a resource in their
own right. The Google Summer of Code 2009 Advanced GUI for Brush Dynamics project was the start of its
development.
+**Developers:** Alexia Death, Michael Natterer, Zhenfeng Zhao
+
+### Tool Preset Improvements
+
+You can now save existing state of any tool as a preset and give it a meaningful name. The presets are
accessible from a new Tool Presets dockable dialog and additionally can be tagged so that you can easily
manage a lot of presets.
+
+This new feature completely replaces the previously existing tool presets system to a new level of
accessibility. It also makes it possible to distribute tool presets just like any other resource because each
preset is saved as an individual file.
+**Developers:** Michael Natterer, Alexia Death
+
+### Cage Transform Tool
+
+<figure>
+<img src="{filename}images/2.8-cage-transform-tool.png" alt="Cage transform tool screenshot" />
+</figure>
+
+A completely new _Cage transform_ tool has been added thanks to the excellent work of one of our Google
Summer of Code 2010 students. The tool implements an innovative approach to free transformation and makes it
possible to easily warp parts of objects using an adjustable user-defined polygonal frame.
+**Developer:** Michael Muré
+
+### File Plug-Ins
+
+A plug-in for loading JPEG2000 images has been added, as well as plug-ins for X11 Mouse Cursor files and
fundamental OpenRaster (.ora) import and export support. Added RGB565 support to the csource plug-in.
+**Developers:** Aurimas Juška, Takeshi Matsuyama
+
+A Cairo based PDF exporter was implemented. While being somewhat simplistic the exporter saves text,
embedding fonts into the final PDF file, and attempts to convert all flat filled areas to vector objects.
+**Developer:** Barak Itkin
+
+Last, but not least, a Web-page plug-in was added to render any web page into an image using Webkit.
+**Developer:** Mukund Sivaraman
+
+### For Tablet Users
+
+<figure>
+<img src="{filename}images/2.8-for-stylus-users.png" alt="For stylus users screenshot" />
+</figure>
+
+A new experimental widget was added to meet the requirements of graphic tablets users. The widget combines a
slider, a label and a numeric value control which simplifies adjusting a value using a stylus, better
visualizes the current value and provides a more compact UI. It is now used in the Tools Options dockable
dialog for opacity control and most options of brush based tools.
+
+Another useful feature for users of advanced input devices such as graphic tablets is a completely new
dialog for input device configuration which allows configuring per-device pressure curves to compensate for
hardware differences and personal per-pen preferences.
+
+People with Intuos tablets and either Artpen or Airbrush styluses will be glad to find that Airbrush wheel
and Artpen rotation are available for driving dynamics via the 'Wheel' input.
+**Developers:** Michael Natterer, Alexia Death
+
+### Resource Tagging
+
+<figure>
+<img src="{filename}images/2.8-resource-tagging-brushes.png" alt="Resource tagging screenshot with brushes"
/>
+</figure>
+
+It is now possible to tag GIMP resources such as brushes and patterns to group them. The tagging is
performed from the respective dockables e.g. the _Brushes_ dockable, and it is possible to filter resources
based on these tags.
+
+The tags are saved to an XML file, external to the data files themselves. It is possible to tag multiple
resources simultaneously in the UI, but currently only while being viewed as a list. This feature was
developed during Google Summer of Code 2008\.
+**Developer:** Aurimas Juška
+**Interaction Architect:** Peter Sikking
+
+### Resources
+
+We have started overhauling the default set of resources and in this version there have been some changes to
the default set of brushes. The silly 'Untitled' title has been removed from unnamed palette entries. A
wholly new set of brushes for painting has been added and makes use of the new tagging system.
+**Developer:** Martin Nordholts
+**Artists:** Johannes Engelhardt, Ramón Miranda, Guillermo Espertino
+
+### Minor Changes
+
+* Allow specifying the written language in the Text Tool. This helps with choosing an appropriate font, or
appropriate glyphs for the selected language.
+* Moved 'Text along path' from tool options to the text context menu.
+* Add diagonal guides to the Crop Tool.
+* Support rotating brushes.
+* The Smooth Stroke feature from GIMP Painter was ported to GIMP.
+* Added 'Rule of fifths' crop guide overlay.
+* Added an icon for the Desaturate tool.
+* Support loading 16bit (RGB565) raw data.
+* Added palette exporter for CSS, PHP, Python, txt and Java, accessed through the palette context menu.
+* Support printing crop marks for images.
+* Made the Pointer dockable show information about selection position and size.
+* Replaced the brush scale control in tool options by a brush size one that works in pixels, and does the
right thing when the brush changes.
+* Improved the Free Select Tool on-canvas feedback.
+* Made it possible to use GEGL for scaling images.
+
+**Developers:** Sven Neumann, Michael Natterer, Tim Jedlicka, Alexia Death, Nelson A. de Oliveira, Jakub
Steiner, Nicholas Doyle, Barak Itkin, Martin Nordholts
+
+## Miscellaneous
+
+### Plug-in Development
+
+GIMP 2.8 also further enhances its scripting abilities. For example, API changes to support layer groups
have been made. Here is a [list of new symbols in GIMP
2.8](//developer.gimp.org/api/2.0/libgimp/libgimp-index-new-in-2-8.html).
+
+### API Changes
+
+A lot of GIMP APIs have been refactored to simplify developing new scripts.
+
+### License
+
+The GIMP license has been changed to (L)GPLv3+.
+
+### GEGL
+
+The projection code which composes a single image from layers has been ported to GEGL. This includes the
layer modes, as well as support for layer groups. Also, preparations have been made for better and more
intuitive handling of the floating selection. **Developers:** Michael Natterer, Martin Nordholts
+
+### Roadmap
+
+The GIMP developers now maintain a roadmap for GIMP development found here:
[http://wiki.gimp.org/index.php/Roadmap](http://wiki.gimp.org/index.php/Roadmap)
+
+## GIMP 2.7 Screenshots
+
+<figure>
+<img src="{filename}../screenshots/1280x800-fresh-start.jpg" alt="First GIMP 2.8 startup" />
+<figcaption>
+First startup of GIMP 2.8 on a 1280x800 desktop.
+</figcaption>
+</figure>
+
+
+</div>
+
+## Known Regressions
+
+GIMP 2.8 relies on a newer version of GTK+2 that unfortunately has partially broken support for graphics
tablets such as Wacom. If your graphic tablet doesn't work in GIMP 2.8 as it should, we recommend downgrading
to 2.6 until we release GIMP 3.0 that relies on GTK+3 which has fully functional support for advanced input
devices.
+
+To address the needs to migrate from the old tools presets system to the new one we provide a
[script](http://wiki.gimp.org/index.php/Mindstorm:Preset_converter) in Python. However, the old tools presets
are not 100% convertible to the new tool presets. For instance, brush scale from 2.6 can't be converted to
brush size in 2.8.
+
+## Download
+
+The development snapshots of GIMP can be downloaded as source code from ftp.gimp.org or from one of the
mirrors listed in the [Downloads](/downloads/#mirrors) section.
+
+Distribution of binary packages of the development version is discouraged unless it is made clear that this
is an early development snapshot. Users should be referred to these release notes or similar information.
+
+## Installation
+
+GIMP 2.7 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.6 installation in parallel to GIMP 2.7, you have to choose a separate installation prefix at
compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
+
+Also, do **not** install GIMP 2.7 to /usr/local because on most systems, its libraries would override the
libraries of a stable GIMP 2.6 installed into /usr, breaking your distribution-installed GIMP from slightly
to completely. The same applies to any prefix your system uses for the purpose or overriding things in
/usr/lib.
+
+You install the new version into a separate prefix, say /opt/gimp-2.7 by passing `--prefix=/opt/gimp-2.7` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.7/bin by setting `PATH=/opt/gimp-2.7/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.7/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.7/lib`. Do not forget to `export`
both variables.
+
+You can use a tiny wrapper script called gimp-2.7 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
+
+ #!/bin/sh
+
+ PATH=/opt/gimp-2.7/bin:$PATH
+ export PATH
+ LD_LIBRARY_PATH=/opt/gimp-2.7/lib
+ export LD_LIBRARY_PATH
+
+ /opt/gimp-2.7/bin/gimp-2.7 "$@"
+
+## Bugs
+
+If you think you found a bug in a development version, please make sure that it hasn't been already
reported. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
+
+* [Open bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [Resolved bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
+
+## Contributing
+
+We need your help to make GIMP 2.8 a success. If you want to join us hacking, show up in #gimp or introduce
yourself on the gimp-developer mailing-list. We are also looking for people to look after the web-site and
update the tutorials. Or you might want to join the [documentation team](http://docs.gimp.org/).
+
diff --git a/content/release-notes/gimp-2.8.md b/content/release-notes/gimp-2.8.md
index cccd0e3..5d4674c 100644
--- a/content/release-notes/gimp-2.8.md
+++ b/content/release-notes/gimp-2.8.md
@@ -1,281 +1,281 @@
-Title: GIMP 2.8 Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-## Introduction
-
-GIMP 2.8 is the result of three years of hard work and collaborative development. This version of GIMP is
equipped with a wealth of new features, including some highly requested ones. Keep reading to find out
exactly what GIMP 2.8 has to offer you in areas such as the user interface, tools, and plug-ins.
-
-## User Interface
-
-### Single-Window Mode
-
-<figure>
-<img src="{filename}images/2.8-single-window-mode.png" alt="Single-window mode screenshot" />
-</figure>
-
-GIMP 2.8 introduces an optional single-window mode. You can toggle between the default multi-window mode and
the new single-window mode through the _Single-window mode_ checkbox in the _Windows_ menu. In single-window
mode, GIMP will put dockable dialogs and images in a single, tabbed image window. The single-window mode
setting is of course preserved if you quit and start GIMP again. Single-window mode removes the necessity for
users of having to deal with multiple windows.
-**Developers:** Martin Nordholts, Michael Natterer
-**Interaction Architect:** Peter Sikking
-
-### Multi-Column Dock Windows
-
-<figure>
-<img src="{filename}images/2.8-multi-column-dock-windows.png" alt="Multi-column dock windows screenshot" />
-</figure>
-
-GIMP 2.8 allows dockable dialogs in a dock window to be placed in multiple columns. To create a new column
in a dock window, drag and drop a dockable dialog on the vertical edges of the dock window. This is an
appealing feature for multi-monitor users where one screen can have a big dock window with all the dialogs
and the tools, while all images are on other displays.
-**Developer:** Martin Nordholts
-**Interaction Architect:** Peter Sikking
-
-### More Screen Real Estate For Dockable Dialogs
-
-<figure>
-<img src="{filename}images/2.8-removed-docking-bars.png" alt="Removed docking bars screenshot" />
-</figure>
-
-The docking bars have been removed and replaced with overlaid highlights. The dockable drag handle has been
removed and the dockable menu button has been moved up to the tabs. A new Automatic tab style has been added
which makes dockable tabs use the available space.
-**Developer:** Martin Nordholts
-
-### Save And Export
-
-<figure>
-<img src="{filename}images/2.8-save-and-export.png" alt="Save and export screenshot" />
-</figure>
-
-A rather big conceptual change is that saving and exporting images now are clearly separated activities.
Saving an image can only be done in the XCF format which is GIMP's native file format, able to save all kinds
of information necessary for works in progress.
-
-To export into other formats _File->Export..._ needs to be used. This distinction makes it clearer if all
available information is stored in a file, or not. There are some optimizations for alternative workflows
such as opening a jpg, polishing it, and quickly exporting back to the original file. This conceptual change
has also allowed us to get rid of the annoying dialogs that warned about the flatting of images when saving
to non-layered formats.
-**Developer:** Martin Nordholts
-**Interaction Architect:** Peter Sikking
-
-### Layer Groups
-
-<figure>
-<img src="{filename}images/2.8-layer-groups.png" alt="Layer groups screenshot" />
-</figure>
-
-For complex compositions, a flat layer structure is very limiting. GIMP 2.8 lets users organize their
compositions better through the introduction of layer groups which allow layers to be organized in tree-like
structures. Layer groups are fully scriptable through the GIMP plug-in API.
-**Developer:** Michael Natterer
-
-### Tools Drawn With Cairo
-
-<figure>
-<img src="{filename}images/2.8-tools-drawn-with-cairo.png" alt="Tools drawn with cairo screenshot" />
-</figure>
-
-All tools rendering on canvas have been ported to Cairo to provide smooth antialiased graphics and make
GIMP's look and feel match modern users expectations. All but a few plug-ins have been ported over to Cairo
as well. Additionally all tools now use an on-canvas progress indicator instead of the one in the statusbar.
-**Developer:** Michael Natterer
-
-### On-Canvas Text Editing
-
-<figure>
-<img src="{filename}images/2.8-on-canvas-text-editing.png" alt="On-canvas text editing screenshot" />
-</figure>
-
-Text editing with the Text Tool is now performed on-canvas instead of in a separate window. The editing
on-canvas is rather sophisticated: apart from the usual text formatting features like font family, style and
size selectors you get numeric control over baseline offset and kerning, as well as the ability to change
text color for a selection. You can also use a combination of Alt and arrow keys to change baseline offset
and kerning. This feature was originally developed during Google Summer of Code 2008 and heavily improved
since.
-**Developers:** Daniel Eddeland, Michael Natterer
-
-### Keyboard Shortcut Changes
-
-Since the keyboard shortcuts Ctrl+E and Ctrl+Shift+E have been repurposed for the image export mechanisms,
new keyboard shortcuts have been setup for 'Shrink Wrap' and 'Fit in Window', namely Ctrl+J and Ctrl+Shift+J
respectively.
-**Developer:** Martin Nordholts
-
-### Simple Math In Size Entries
-
-<figure>
-<img src="{filename}images/2.8-math-in-size-entries.png" alt="Math in size entries screenshot" />
-</figure>
-
-Enhancements have also been made to the size entry widget, which is used for inputting most of the x, y,
width, height parameters. For example, in the scale dialog it is now possible to write '50%' in the Width
field to scale the image to 50% of the width. Expressions such as '30in + 40px' and '4 * 5.4in' work, too.
-**Developer:** Fredrik Alströmer
-
-### Minor Changes
-
-* Added 'Windows→Hide docks' menu item that does what 'Tab' does and also displays its state, which is now
persistent across sessions, too.
-* Added infrastructure allowing to embed user interface elements on the canvas. This is currently used for
text styles in the text tool, and (experimentally) when a color correction tool is invoked while the canvas
is in full-screen mode.
-* To make dock window titles manageable, only show the active dockable in the dock window title.
-* The layer modes have been rearranged into more logical and useful groups based on the effect they have
on compositing of a layer. Layer modes that make the composite lighter are in one group, layer modes that
make the composite darker in another group, and so forth.
-* You can now Alt+Click on layers in the Layers dialog to create a selection from it. Add, subtract and
intersect modifiers Ctrl, Shift and Ctrl+Shift keys work too. This makes it easy to compose contents of a
layer based on the contents of other layers, without detours.
-* New docks are created at the pointer position.
-* Removed Toolbox from list of Recently Closed Docks, handle that directly in the Windows menu.
-* Allow closing the toolbox without closing the whole application.
-* Default to non-fixed-aspect in Canvas Size dialog.
-* In the Preferences dialog, only have one setting for the window hint for both the toolbox and the docks.
-* Support arbitrary affine transforms of brushes.
-* Got rid of the Tools dockable and move toolbox configuration to Preferences.
-* A question that often arises is how to change the UI language in GIMP, which has traditionally been a
bit cumbersome. Not any longer, it is now possible to change the language in Preferences.
-* Added 'Lock content' button to the layers, channels and paths dialogs, made the lock buttons more
compact.
-* Allow renaming list items with F2.
-* Allow binding arbitrary actions to extra mouse buttons.
-
-**Developers:** Michael Natterer, Martin Nordholts, Alexander Jones, Alexia Death, Sven Neumann
-
-## Tools & Plug-ins
-
-### Brush System Improvements
-
-<figure>
-<img src="{filename}images/2.8-brush-system-improvements.png" alt="Brush system improvements screenshot" />
-</figure>
-
-The brush dynamics engine has been expanded considerably, making almost all aspects of the brush engine
drivable by a multitude of inputs, all of them configurable with their own response curve.
-
-Because of the expansion, dynamics were separated from tool options and converted into a resource in their
own right. The Google Summer of Code 2009 Advanced GUI for Brush Dynamics project was the start of its
development.
-**Developers:** Alexia Death, Michael Natterer, Zhenfeng Zhao
-
-### Tool Preset Improvements
-
-You can now save existing state of any tool as a preset and give it a meaningful name. The presets are
accessible from a new Tool Presets dockable dialog and additionally can be tagged so that you can easily
manage a lot of presets.
-
-This new feature completely replaces the previously existing tool presets system to a new level of
accessibility. It also makes it possible to distribute tool presets just like any other resource because each
preset is saved as an individual file.
-**Developers:** Michael Natterer, Alexia Death
-
-### Cage Transform Tool
-
-<figure>
-<img src="{filename}images/2.8-cage-transform-tool.png" alt="Cage transform tool screenshot" />
-</figure>
-
-A completely new _Cage transform_ tool has been added thanks to the excellent work of one of our Google
Summer of Code 2010 students. The tool implements an innovative approach to free transformation and makes it
possible to easily warp parts of objects using an adjustable user-defined polygonal frame.
-**Developer:** Michael Muré
-
-### File Plug-Ins
-
-A plug-in for loading JPEG2000 images has been added, as well as plug-ins for X11 Mouse Cursor files and
fundamental OpenRaster (.ora) import and export support. Added RGB565 support to the csource plug-in.
-**Developers:** Aurimas Juška, Takeshi Matsuyama
-
-A Cairo based PDF exporter was implemented. While being somewhat simplistic the exporter saves text,
embedding fonts into the final PDF file, and attempts to convert all flat filled areas to vector objects.
-**Developer:** Barak Itkin
-
-Last, but not least, a Web-page plug-in was added to render any web page into an image using Webkit.
-**Developer:** Mukund Sivaraman
-
-### For Tablet Users
-
-<figure>
-<img src="{filename}images/2.8-for-stylus-users.png" alt="For stylus users screenshot" />
-</figure>
-
-A new experimental widget was added to meet the requirements of graphic tablets users. The widget combines a
slider, a label and a numeric value control which simplifies adjusting a value using a stylus, better
visualizes the current value and provides a more compact UI. It is now used in the Tools Options dockable
dialog for opacity control and most options of brush based tools.
-
-Another useful feature for users of advanced input devices such as graphic tablets is a completely new
dialog for input device configuration which allows configuring per-device pressure curves to compensate for
hardware differences and personal per-pen preferences.
-
-People with Intuos tablets and either Artpen or Airbrush styluses will be glad to find that Airbrush wheel
and Artpen rotation are available for driving dynamics via the 'Wheel' input.
-**Developers:** Michael Natterer, Alexia Death
-
-### Resource Tagging
-
-<figure>
-<img src="{filename}images/2.8-resource-tagging-brushes.png" alt="Resource tagging screenshot with brushes"
/>
-</figure>
-
-It is now possible to tag GIMP resources such as brushes and patterns to group them. The tagging is
performed from the respective dockables e.g. the _Brushes_ dockable, and it is possible to filter resources
based on these tags.
-
-The tags are saved to an XML file, external to the data files themselves. It is possible to tag multiple
resources simultaneously in the UI, but currently only while being viewed as a list. This feature was
developed during Google Summer of Code 2008\.
-**Developer:** Aurimas Juška
-**Interaction Architect:** Peter Sikking
-
-### Resources
-
-We have started overhauling the default set of resources and in this version there have been some changes to
the default set of brushes. The silly 'Untitled' title has been removed from unnamed palette entries. A
wholly new set of brushes for painting has been added and makes use of the new tagging system.
-**Developer:** Martin Nordholts
-**Artists:** Johannes Engelhardt, Ramón Miranda, Guillermo Espertino
-
-### Minor Changes
-
-* Allow specifying the written language in the Text Tool. This helps with choosing an appropriate font, or
appropriate glyphs for the selected language.
-* Moved 'Text along path' from tool options to the text context menu.
-* Add diagonal guides to the Crop Tool.
-* Support rotating brushes.
-* The Smooth Stroke feature from GIMP Painter was ported to GIMP.
-* Added 'Rule of fifths' crop guide overlay.
-* Added an icon for the Desaturate tool.
-* Support loading 16bit (RGB565) raw data.
-* Added palette exporter for CSS, PHP, Python, txt and Java, accessed through the palette context menu.
-* Support printing crop marks for images.
-* Made the Pointer dockable show information about selection position and size.
-* Replaced the brush scale control in tool options by a brush size one that works in pixels, and does the
right thing when the brush changes.
-* Improved the Free Select Tool on-canvas feedback.
-* Made it possible to use GEGL for scaling images.
-
-**Developers:** Sven Neumann, Michael Natterer, Tim Jedlicka, Alexia Death, Nelson A. de Oliveira, Jakub
Steiner, Nicholas Doyle, Barak Itkin, Martin Nordholts
-
-## Miscellaneous
-
-### Plug-in Development
-
-GIMP 2.8 also further enhances its scripting abilities. For example, API changes to support layer groups
have been made. Here is a [list of new symbols in GIMP
2.8](//developer.gimp.org/api/2.0/libgimp/libgimp-index-new-in-2-8.html).
-
-### API Changes
-
-A lot of GIMP APIs have been refactored to simplify developing new scripts.
-
-### License
-
-The GIMP license has been changed to (L)GPLv3+.
-
-### GEGL
-
-The projection code which composes a single image from layers has been ported to GEGL. This includes the
layer modes, as well as support for layer groups. Also, preparations have been made for better and more
intuitive handling of the floating selection.
-**Developers:** Michael Natterer, Martin Nordholts
-
-### Roadmap
-
-The GIMP developers now maintain a roadmap for GIMP development found here:
[http://wiki.gimp.org/index.php/Roadmap](http://wiki.gimp.org/index.php/Roadmap)
-
-## GIMP 2.8 Screenshots
-
-<figure>
-<img src="{filename}../screenshots/1280x800-fresh-start.jpg" alt="First GIMP 2.8 startup" />
-<figcaption>
-First startup of GIMP 2.8 on a 1280x800 desktop.
-</figcaption>
-</figure>
-
-
-</div>
-
-## Known Regressions
-
-GIMP 2.8 relies on a newer version of GTK+2 that unfortunately has partially broken support for graphics
tablets such as Wacom. If your graphic tablet doesn't work in GIMP 2.8 as it should, we recommend downgrading
to 2.6 until we release GIMP 3.0 that relies on GTK+3 which has fully functional support for advanced input
devices.
-
-To address the needs to migrate from the old tools presets system to the new one we provide a
[script](http://wiki.gimp.org/index.php/Mindstorm:Preset_converter) in Python. However, the old tools presets
are not 100% convertible to the new tool presets. For instance, brush scale from 2.6 can't be converted to
brush size in 2.8.
-
-## Download and install pre-made packages
-
-GIMP can be downloaded directly from our [Downloads](/downloads/) section.
-
-Please be very cautious when downloading from anywhere else - some sites use GIMP's popularity to lure
unwary users into their traps by shipping modified installer packages.
-
-## Building GIMP yourself from source
-
-GIMP 2.8 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.6 installation in parallel to GIMP 2.8, you have to choose a separate installation prefix at
compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
-
-Also, do **not** install GIMP 2.8 to /usr/local because on most systems, its libraries would override the
libraries of a stable GIMP 2.6 installed into /usr, breaking your distribution-installed GIMP from slightly
to completely. The same applies to any prefix your system uses for the purpose or overriding things in
/usr/lib.
-
-You install the new version into a separate prefix, say /opt/gimp-2.8 by passing `--prefix=/opt/gimp-2.8` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.8/bin by setting `PATH=/opt/gimp-2.8/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.8/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.8/lib`. Do not forget to `export`
both variables.
-
-You can use a tiny wrapper script called gimp-2.8 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
-
- #!/bin/sh
-
- PATH=/opt/gimp-2.8/bin:$PATH
- export PATH
- LD_LIBRARY_PATH=/opt/gimp-2.8/lib
- export LD_LIBRARY_PATH
-
- /opt/gimp-2.8/bin/gimp-2.8 "$@"
-
-## Bugs
-
-If you think you found a bug in a development version, please make sure that it hasn't been already
reported. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
-
-* [Open bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
-* [Resolved bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
-
-## Contributing
-
-We need your help to make GIMP 2.8 a success. If you want to join us hacking, show up in #gimp or introduce
yourself on the gimp-developer mailing-list. We are also looking for people to look after the web-site and
update the tutorials. Or you might want to join the [documentation team](http://docs.gimp.org/).
+Title: GIMP 2.8 Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+## Introduction
+
+GIMP 2.8 is the result of three years of hard work and collaborative development. This version of GIMP is
equipped with a wealth of new features, including some highly requested ones. Keep reading to find out
exactly what GIMP 2.8 has to offer you in areas such as the user interface, tools, and plug-ins.
+
+## User Interface
+
+### Single-Window Mode
+
+<figure>
+<img src="{filename}images/2.8-single-window-mode.png" alt="Single-window mode screenshot" />
+</figure>
+
+GIMP 2.8 introduces an optional single-window mode. You can toggle between the default multi-window mode and
the new single-window mode through the _Single-window mode_ checkbox in the _Windows_ menu. In single-window
mode, GIMP will put dockable dialogs and images in a single, tabbed image window. The single-window mode
setting is of course preserved if you quit and start GIMP again. Single-window mode removes the necessity for
users of having to deal with multiple windows.
+**Developers:** Martin Nordholts, Michael Natterer
+**Interaction Architect:** Peter Sikking
+
+### Multi-Column Dock Windows
+
+<figure>
+<img src="{filename}images/2.8-multi-column-dock-windows.png" alt="Multi-column dock windows screenshot" />
+</figure>
+
+GIMP 2.8 allows dockable dialogs in a dock window to be placed in multiple columns. To create a new column
in a dock window, drag and drop a dockable dialog on the vertical edges of the dock window. This is an
appealing feature for multi-monitor users where one screen can have a big dock window with all the dialogs
and the tools, while all images are on other displays.
+**Developer:** Martin Nordholts
+**Interaction Architect:** Peter Sikking
+
+### More Screen Real Estate For Dockable Dialogs
+
+<figure>
+<img src="{filename}images/2.8-removed-docking-bars.png" alt="Removed docking bars screenshot" />
+</figure>
+
+The docking bars have been removed and replaced with overlaid highlights. The dockable drag handle has been
removed and the dockable menu button has been moved up to the tabs. A new Automatic tab style has been added
which makes dockable tabs use the available space.
+**Developer:** Martin Nordholts
+
+### Save And Export
+
+<figure>
+<img src="{filename}images/2.8-save-and-export.png" alt="Save and export screenshot" />
+</figure>
+
+A rather big conceptual change is that saving and exporting images now are clearly separated activities.
Saving an image can only be done in the XCF format which is GIMP's native file format, able to save all kinds
of information necessary for works in progress.
+
+To export into other formats _File->Export..._ needs to be used. This distinction makes it clearer if all
available information is stored in a file, or not. There are some optimizations for alternative workflows
such as opening a jpg, polishing it, and quickly exporting back to the original file. This conceptual change
has also allowed us to get rid of the annoying dialogs that warned about the flatting of images when saving
to non-layered formats.
+**Developer:** Martin Nordholts
+**Interaction Architect:** Peter Sikking
+
+### Layer Groups
+
+<figure>
+<img src="{filename}images/2.8-layer-groups.png" alt="Layer groups screenshot" />
+</figure>
+
+For complex compositions, a flat layer structure is very limiting. GIMP 2.8 lets users organize their
compositions better through the introduction of layer groups which allow layers to be organized in tree-like
structures. Layer groups are fully scriptable through the GIMP plug-in API.
+**Developer:** Michael Natterer
+
+### Tools Drawn With Cairo
+
+<figure>
+<img src="{filename}images/2.8-tools-drawn-with-cairo.png" alt="Tools drawn with cairo screenshot" />
+</figure>
+
+All tools rendering on canvas have been ported to Cairo to provide smooth antialiased graphics and make
GIMP's look and feel match modern users expectations. All but a few plug-ins have been ported over to Cairo
as well. Additionally all tools now use an on-canvas progress indicator instead of the one in the statusbar.
+**Developer:** Michael Natterer
+
+### On-Canvas Text Editing
+
+<figure>
+<img src="{filename}images/2.8-on-canvas-text-editing.png" alt="On-canvas text editing screenshot" />
+</figure>
+
+Text editing with the Text Tool is now performed on-canvas instead of in a separate window. The editing
on-canvas is rather sophisticated: apart from the usual text formatting features like font family, style and
size selectors you get numeric control over baseline offset and kerning, as well as the ability to change
text color for a selection. You can also use a combination of Alt and arrow keys to change baseline offset
and kerning. This feature was originally developed during Google Summer of Code 2008 and heavily improved
since.
+**Developers:** Daniel Eddeland, Michael Natterer
+
+### Keyboard Shortcut Changes
+
+Since the keyboard shortcuts Ctrl+E and Ctrl+Shift+E have been repurposed for the image export mechanisms,
new keyboard shortcuts have been setup for 'Shrink Wrap' and 'Fit in Window', namely Ctrl+J and Ctrl+Shift+J
respectively.
+**Developer:** Martin Nordholts
+
+### Simple Math In Size Entries
+
+<figure>
+<img src="{filename}images/2.8-math-in-size-entries.png" alt="Math in size entries screenshot" />
+</figure>
+
+Enhancements have also been made to the size entry widget, which is used for inputting most of the x, y,
width, height parameters. For example, in the scale dialog it is now possible to write '50%' in the Width
field to scale the image to 50% of the width. Expressions such as '30in + 40px' and '4 * 5.4in' work, too.
+**Developer:** Fredrik Alströmer
+
+### Minor Changes
+
+* Added 'Windows→Hide docks' menu item that does what 'Tab' does and also displays its state, which is now
persistent across sessions, too.
+* Added infrastructure allowing to embed user interface elements on the canvas. This is currently used for
text styles in the text tool, and (experimentally) when a color correction tool is invoked while the canvas
is in full-screen mode.
+* To make dock window titles manageable, only show the active dockable in the dock window title.
+* The layer modes have been rearranged into more logical and useful groups based on the effect they have
on compositing of a layer. Layer modes that make the composite lighter are in one group, layer modes that
make the composite darker in another group, and so forth.
+* You can now Alt+Click on layers in the Layers dialog to create a selection from it. Add, subtract and
intersect modifiers Ctrl, Shift and Ctrl+Shift keys work too. This makes it easy to compose contents of a
layer based on the contents of other layers, without detours.
+* New docks are created at the pointer position.
+* Removed Toolbox from list of Recently Closed Docks, handle that directly in the Windows menu.
+* Allow closing the toolbox without closing the whole application.
+* Default to non-fixed-aspect in Canvas Size dialog.
+* In the Preferences dialog, only have one setting for the window hint for both the toolbox and the docks.
+* Support arbitrary affine transforms of brushes.
+* Got rid of the Tools dockable and move toolbox configuration to Preferences.
+* A question that often arises is how to change the UI language in GIMP, which has traditionally been a
bit cumbersome. Not any longer, it is now possible to change the language in Preferences.
+* Added 'Lock content' button to the layers, channels and paths dialogs, made the lock buttons more
compact.
+* Allow renaming list items with F2.
+* Allow binding arbitrary actions to extra mouse buttons.
+
+**Developers:** Michael Natterer, Martin Nordholts, Alexander Jones, Alexia Death, Sven Neumann
+
+## Tools & Plug-ins
+
+### Brush System Improvements
+
+<figure>
+<img src="{filename}images/2.8-brush-system-improvements.png" alt="Brush system improvements screenshot" />
+</figure>
+
+The brush dynamics engine has been expanded considerably, making almost all aspects of the brush engine
drivable by a multitude of inputs, all of them configurable with their own response curve.
+
+Because of the expansion, dynamics were separated from tool options and converted into a resource in their
own right. The Google Summer of Code 2009 Advanced GUI for Brush Dynamics project was the start of its
development.
+**Developers:** Alexia Death, Michael Natterer, Zhenfeng Zhao
+
+### Tool Preset Improvements
+
+You can now save existing state of any tool as a preset and give it a meaningful name. The presets are
accessible from a new Tool Presets dockable dialog and additionally can be tagged so that you can easily
manage a lot of presets.
+
+This new feature completely replaces the previously existing tool presets system to a new level of
accessibility. It also makes it possible to distribute tool presets just like any other resource because each
preset is saved as an individual file.
+**Developers:** Michael Natterer, Alexia Death
+
+### Cage Transform Tool
+
+<figure>
+<img src="{filename}images/2.8-cage-transform-tool.png" alt="Cage transform tool screenshot" />
+</figure>
+
+A completely new _Cage transform_ tool has been added thanks to the excellent work of one of our Google
Summer of Code 2010 students. The tool implements an innovative approach to free transformation and makes it
possible to easily warp parts of objects using an adjustable user-defined polygonal frame.
+**Developer:** Michael Muré
+
+### File Plug-Ins
+
+A plug-in for loading JPEG2000 images has been added, as well as plug-ins for X11 Mouse Cursor files and
fundamental OpenRaster (.ora) import and export support. Added RGB565 support to the csource plug-in.
+**Developers:** Aurimas Juška, Takeshi Matsuyama
+
+A Cairo based PDF exporter was implemented. While being somewhat simplistic the exporter saves text,
embedding fonts into the final PDF file, and attempts to convert all flat filled areas to vector objects.
+**Developer:** Barak Itkin
+
+Last, but not least, a Web-page plug-in was added to render any web page into an image using Webkit.
+**Developer:** Mukund Sivaraman
+
+### For Tablet Users
+
+<figure>
+<img src="{filename}images/2.8-for-stylus-users.png" alt="For stylus users screenshot" />
+</figure>
+
+A new experimental widget was added to meet the requirements of graphic tablets users. The widget combines a
slider, a label and a numeric value control which simplifies adjusting a value using a stylus, better
visualizes the current value and provides a more compact UI. It is now used in the Tools Options dockable
dialog for opacity control and most options of brush based tools.
+
+Another useful feature for users of advanced input devices such as graphic tablets is a completely new
dialog for input device configuration which allows configuring per-device pressure curves to compensate for
hardware differences and personal per-pen preferences.
+
+People with Intuos tablets and either Artpen or Airbrush styluses will be glad to find that Airbrush wheel
and Artpen rotation are available for driving dynamics via the 'Wheel' input.
+**Developers:** Michael Natterer, Alexia Death
+
+### Resource Tagging
+
+<figure>
+<img src="{filename}images/2.8-resource-tagging-brushes.png" alt="Resource tagging screenshot with brushes"
/>
+</figure>
+
+It is now possible to tag GIMP resources such as brushes and patterns to group them. The tagging is
performed from the respective dockables e.g. the _Brushes_ dockable, and it is possible to filter resources
based on these tags.
+
+The tags are saved to an XML file, external to the data files themselves. It is possible to tag multiple
resources simultaneously in the UI, but currently only while being viewed as a list. This feature was
developed during Google Summer of Code 2008\.
+**Developer:** Aurimas Juška
+**Interaction Architect:** Peter Sikking
+
+### Resources
+
+We have started overhauling the default set of resources and in this version there have been some changes to
the default set of brushes. The silly 'Untitled' title has been removed from unnamed palette entries. A
wholly new set of brushes for painting has been added and makes use of the new tagging system.
+**Developer:** Martin Nordholts
+**Artists:** Johannes Engelhardt, Ramón Miranda, Guillermo Espertino
+
+### Minor Changes
+
+* Allow specifying the written language in the Text Tool. This helps with choosing an appropriate font, or
appropriate glyphs for the selected language.
+* Moved 'Text along path' from tool options to the text context menu.
+* Add diagonal guides to the Crop Tool.
+* Support rotating brushes.
+* The Smooth Stroke feature from GIMP Painter was ported to GIMP.
+* Added 'Rule of fifths' crop guide overlay.
+* Added an icon for the Desaturate tool.
+* Support loading 16bit (RGB565) raw data.
+* Added palette exporter for CSS, PHP, Python, txt and Java, accessed through the palette context menu.
+* Support printing crop marks for images.
+* Made the Pointer dockable show information about selection position and size.
+* Replaced the brush scale control in tool options by a brush size one that works in pixels, and does the
right thing when the brush changes.
+* Improved the Free Select Tool on-canvas feedback.
+* Made it possible to use GEGL for scaling images.
+
+**Developers:** Sven Neumann, Michael Natterer, Tim Jedlicka, Alexia Death, Nelson A. de Oliveira, Jakub
Steiner, Nicholas Doyle, Barak Itkin, Martin Nordholts
+
+## Miscellaneous
+
+### Plug-in Development
+
+GIMP 2.8 also further enhances its scripting abilities. For example, API changes to support layer groups
have been made. Here is a [list of new symbols in GIMP
2.8](//developer.gimp.org/api/2.0/libgimp/libgimp-index-new-in-2-8.html).
+
+### API Changes
+
+A lot of GIMP APIs have been refactored to simplify developing new scripts.
+
+### License
+
+The GIMP license has been changed to (L)GPLv3+.
+
+### GEGL
+
+The projection code which composes a single image from layers has been ported to GEGL. This includes the
layer modes, as well as support for layer groups. Also, preparations have been made for better and more
intuitive handling of the floating selection.
+**Developers:** Michael Natterer, Martin Nordholts
+
+### Roadmap
+
+The GIMP developers now maintain a roadmap for GIMP development found here:
[http://wiki.gimp.org/index.php/Roadmap](http://wiki.gimp.org/index.php/Roadmap)
+
+## GIMP 2.8 Screenshots
+
+<figure>
+<img src="{filename}../screenshots/1280x800-fresh-start.jpg" alt="First GIMP 2.8 startup" />
+<figcaption>
+First startup of GIMP 2.8 on a 1280x800 desktop.
+</figcaption>
+</figure>
+
+
+</div>
+
+## Known Regressions
+
+GIMP 2.8 relies on a newer version of GTK+2 that unfortunately has partially broken support for graphics
tablets such as Wacom. If your graphic tablet doesn't work in GIMP 2.8 as it should, we recommend downgrading
to 2.6 until we release GIMP 3.0 that relies on GTK+3 which has fully functional support for advanced input
devices.
+
+To address the needs to migrate from the old tools presets system to the new one we provide a
[script](http://wiki.gimp.org/index.php/Mindstorm:Preset_converter) in Python. However, the old tools presets
are not 100% convertible to the new tool presets. For instance, brush scale from 2.6 can't be converted to
brush size in 2.8.
+
+## Download and install pre-made packages
+
+GIMP can be downloaded directly from our [Downloads](/downloads/) section.
+
+Please be very cautious when downloading from anywhere else - some sites use GIMP's popularity to lure
unwary users into their traps by shipping modified installer packages.
+
+## Building GIMP yourself from source
+
+GIMP 2.8 must **not** be installed in the same prefix as other GIMP 2.x versions. If you want to keep your
GIMP 2.6 installation in parallel to GIMP 2.8, you have to choose a separate installation prefix at
compile-time and ensure that you use different library search paths for each version. If you do not set up
your environment differently for each version, you will experience conflicts with the libraries and at least
one version is likely to fail.
+
+Also, do **not** install GIMP 2.8 to /usr/local because on most systems, its libraries would override the
libraries of a stable GIMP 2.6 installed into /usr, breaking your distribution-installed GIMP from slightly
to completely. The same applies to any prefix your system uses for the purpose or overriding things in
/usr/lib.
+
+You install the new version into a separate prefix, say /opt/gimp-2.8 by passing `--prefix=/opt/gimp-2.8` to
the configure script. Then, in order to run the binary installed there, you change your environment to look
for executables in /opt/gimp-2.8/bin by setting `PATH=/opt/gimp-2.8/bin` and you tell your linker to pick up
libraries from /opt/gimp-2.8/lib by setting `LD_LIBRARY_PATH=/opt/gimp-2.8/lib`. Do not forget to `export`
both variables.
+
+You can use a tiny wrapper script called gimp-2.8 and place it into /usr/local/bin or elsewhere in your
PATH. The script would look something like this:
+
+ #!/bin/sh
+
+ PATH=/opt/gimp-2.8/bin:$PATH
+ export PATH
+ LD_LIBRARY_PATH=/opt/gimp-2.8/lib
+ export LD_LIBRARY_PATH
+
+ /opt/gimp-2.8/bin/gimp-2.8 "$@"
+
+## Bugs
+
+If you think you found a bug in a development version, please make sure that it hasn't been already
reported. Search [Bugzilla](http://bugzilla.gnome.org/) before filing a new bug-report. Here are some
interesting Bugzilla queries:
+
+* [Open bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED)
+* [Resolved bugs with milestone
2.8](https://bugzilla.gnome.org/buglist.cgi?product=GIMP&target_milestone=2.8&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED)
+
+## Contributing
+
+We need your help to make GIMP 2.8 a success. If you want to join us hacking, show up in #gimp or introduce
yourself on the gimp-developer mailing-list. We are also looking for people to look after the web-site and
update the tutorials. Or you might want to join the [documentation team](http://docs.gimp.org/).
diff --git a/content/release-notes/index.md b/content/release-notes/index.md
index 222d82c..1161de1 100644
--- a/content/release-notes/index.md
+++ b/content/release-notes/index.md
@@ -1,21 +1,21 @@
-Title: GIMP Release Notes
-Date: 2015-08-17T14:15:58-05:00
-Modified: 2015-08-17T14:16:03-05:00
-Authors: Pat David
-Status: hidden
-
-
-Here are the release notes for the versions of GIMP that can be found on our [downloads page](/downloads/).
-
-* [Release notes for the stable version, GIMP 2.8](gimp-2.8.html). This is the version that most users
should be running.
-
-Older release notes may still have some historical value:
-
-* [2.7](gimp-2.7.html) (development)
-* [2.6](gimp-2.6.html) (stable)
-* [2.5](gimp-2.5.html) (development)
-* [2.4](gimp-2.4.html) (stable)
-* [2.3](gimp-2.3.html) (development)
-* [2.3.3](gimp-2.3.3.html) (SIOX release)
-* [2.2](gimp-2.2.html) (stable)
-
+Title: GIMP Release Notes
+Date: 2015-08-17T14:15:58-05:00
+Modified: 2015-08-17T14:16:03-05:00
+Authors: Pat David
+Status: hidden
+
+
+Here are the release notes for the versions of GIMP that can be found on our [downloads page](/downloads/).
+
+* [Release notes for the stable version, GIMP 2.8](gimp-2.8.html). This is the version that most users
should be running.
+
+Older release notes may still have some historical value:
+
+* [2.7](gimp-2.7.html) (development)
+* [2.6](gimp-2.6.html) (stable)
+* [2.5](gimp-2.5.html) (development)
+* [2.4](gimp-2.4.html) (stable)
+* [2.3](gimp-2.3.html) (development)
+* [2.3.3](gimp-2.3.3.html) (SIOX release)
+* [2.2](gimp-2.2.html) (stable)
+
diff --git a/content/screenshots/index.md b/content/screenshots/index.md
index 560b31a..f1331a2 100644
--- a/content/screenshots/index.md
+++ b/content/screenshots/index.md
@@ -1,49 +1,49 @@
-Title: Everyone Loves Screenshots!
-Date: 2015-08-17T15:38:06-05:00
-Modified: 2015-08-17T15:38:12-05:00
-Authors: Pat David
-Status: hidden
-
-
-
-## GNU/Linux Screenshots
-
-<figure>
-<img src="linux_fullscreen.jpg" alt="Linux Fullscreen" />
-<figcaption>
-GIMP running fullscreen, side by side with F-Spot.
-</figcaption>
-</figure>
-
-<figure>
-<img src="linux_mixer.jpg" alt="Linux Mixer" />
-<figcaption>
-Full control over B/W process using the channel mixer.
-</figcaption>
-</figure>
-
-<figure>
-<img src="linux_dualscreen_griatch_art.jpg" alt="Digital artwork" />
-<figcaption>
-Digital artwork from scratch in GIMP.
-</figcaption>
-</figure>
-
-
-## Microsoft Windows Screenshots
-
-<figure>
-<img src="windows_crop.jpg" alt="GIMP on Microsoft Windows" />
-<figcaption>
-GIMP running on Microsoft Windows features a widget theme mimicking the native environment.
-</figcaption>
-</figure>
-
-## Mac OS X Screenshots
-
-<figure>
-<img src="osx_aperture.jpg" alt="GIMP on the Mac" />
-<figcaption>
-GIMP side by side with Apple Aperture on Mac OS X.
-</figcaption>
-</figure>
+Title: Everyone Loves Screenshots!
+Date: 2015-08-17T15:38:06-05:00
+Modified: 2015-08-17T15:38:12-05:00
+Authors: Pat David
+Status: hidden
+
+
+
+## GNU/Linux Screenshots
+
+<figure>
+<img src="linux_fullscreen.jpg" alt="Linux Fullscreen" />
+<figcaption>
+GIMP running fullscreen, side by side with F-Spot.
+</figcaption>
+</figure>
+
+<figure>
+<img src="linux_mixer.jpg" alt="Linux Mixer" />
+<figcaption>
+Full control over B/W process using the channel mixer.
+</figcaption>
+</figure>
+
+<figure>
+<img src="linux_dualscreen_griatch_art.jpg" alt="Digital artwork" />
+<figcaption>
+Digital artwork from scratch in GIMP.
+</figcaption>
+</figure>
+
+
+## Microsoft Windows Screenshots
+
+<figure>
+<img src="windows_crop.jpg" alt="GIMP on Microsoft Windows" />
+<figcaption>
+GIMP running on Microsoft Windows features a widget theme mimicking the native environment.
+</figcaption>
+</figure>
+
+## Mac OS X Screenshots
+
+<figure>
+<img src="osx_aperture.jpg" alt="GIMP on the Mac" />
+<figcaption>
+GIMP side by side with Apple Aperture on Mac OS X.
+</figcaption>
+</figure>
diff --git a/content/source/howtos/gimp-git-build.md b/content/source/howtos/gimp-git-build.md
index e67bd30..1d666e4 100644
--- a/content/source/howtos/gimp-git-build.md
+++ b/content/source/howtos/gimp-git-build.md
@@ -1,46 +1,46 @@
-Title: Best Way to Keep Up with GIMP from git
-Date: 2015-08-17T15:38:06-05:00
-Modified: 2015-08-17T15:38:12-05:00
-Author: Martin Nordholts
-Status: hidden
-
-Author: Martin Nordholts
-
-The more people that use the latest GIMP code from git the better. It keeps the required effort to
contribute code upstreams small, which in turn increases the likelihood of upstream contributions, and it
makes bugs more vulnerable to early discovery which minimizes their impact.
-
-However, keeping up with GIMP from git means extra work compared to using prebuilt packages. Unless you know
of an easy way you might not withstand it. What follows is a description of how I do it, which is almost
effortless once setup. I assume you know how to install necessary dependencies (note you can use the method I
describe for the key dependencies, including babl, GLib, GEGL and GTK+), what "the install prefix" means, and
that you run Linux. The approach I use differs in two principal way compared to the many guides found on the
net:
-
-1. I use autoconf's config.site feature instead of setting up environment variables manually
-2. I install in my home directory
-
-Making use of config.site nullifies the need to manually manage environment variables, and installing in the
home directory makes it easy to tinker with an installation since you don't need to be root. So, put this in
$PREFIX/share/config.site where $PREFIX is in your home directory such as PREFIX=/home/martin/gimp-git,
either manually or using this script:
-
- export PATH="$PREFIX/bin:$PATH"
- export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
- export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
- export ACLOCAL_FLAGS="-I $PREFIX/share/aclocal $ACLOCAL_FLAGS"
-
-
-Then, assuming you have all the dependencies, you build GIMP the first time with:
-
- git clone git://git.gnome.org/gimp
- cd gimp
- ./autogen.sh --prefix=$PREFIX
- make
- make install
-
-
-and then to get updated with the latest changes from the constantly moving code base you regularly do
-
- git pull --rebase
- make
- make install
-
-Note that the latter works without requiring any environment variables to be set since configure will source
config.site. And because autogen.sh passes --enable-maintainer-mode to configure, it will also work when
Makefile.am's or configure.ac are changed. In those rare occasions where things break, just run git clean
-xdf which removes all non-version-controlled files so that you can start over from autogen.sh.
-
-The above approach works for as good as all GNOME projects, including GLib, babl, GEGL and GTK+. This makes
it easy to adapt to GIMP's build requirements of these and other libraries even if your distro doesn't meet
them. Let me know if you have problems!
-
-<small>
-Originally published at:
-[http://www.chromecode.com/2009/12/best-way-to-keep-up-with-gimp-from-git_26.html](http://www.chromecode.com/2009/12/best-way-to-keep-up-with-gimp-from-git_26.html)
-</small>
+Title: Best Way to Keep Up with GIMP from git
+Date: 2015-08-17T15:38:06-05:00
+Modified: 2015-08-17T15:38:12-05:00
+Author: Martin Nordholts
+Status: hidden
+
+Author: Martin Nordholts
+
+The more people that use the latest GIMP code from git the better. It keeps the required effort to
contribute code upstreams small, which in turn increases the likelihood of upstream contributions, and it
makes bugs more vulnerable to early discovery which minimizes their impact.
+
+However, keeping up with GIMP from git means extra work compared to using prebuilt packages. Unless you know
of an easy way you might not withstand it. What follows is a description of how I do it, which is almost
effortless once setup. I assume you know how to install necessary dependencies (note you can use the method I
describe for the key dependencies, including babl, GLib, GEGL and GTK+), what "the install prefix" means, and
that you run Linux. The approach I use differs in two principal way compared to the many guides found on the
net:
+
+1. I use autoconf's config.site feature instead of setting up environment variables manually
+2. I install in my home directory
+
+Making use of config.site nullifies the need to manually manage environment variables, and installing in the
home directory makes it easy to tinker with an installation since you don't need to be root. So, put this in
$PREFIX/share/config.site where $PREFIX is in your home directory such as PREFIX=/home/martin/gimp-git,
either manually or using this script:
+
+ export PATH="$PREFIX/bin:$PATH"
+ export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
+ export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
+ export ACLOCAL_FLAGS="-I $PREFIX/share/aclocal $ACLOCAL_FLAGS"
+
+
+Then, assuming you have all the dependencies, you build GIMP the first time with:
+
+ git clone git://git.gnome.org/gimp
+ cd gimp
+ ./autogen.sh --prefix=$PREFIX
+ make
+ make install
+
+
+and then to get updated with the latest changes from the constantly moving code base you regularly do
+
+ git pull --rebase
+ make
+ make install
+
+Note that the latter works without requiring any environment variables to be set since configure will source
config.site. And because autogen.sh passes --enable-maintainer-mode to configure, it will also work when
Makefile.am's or configure.ac are changed. In those rare occasions where things break, just run git clean
-xdf which removes all non-version-controlled files so that you can start over from autogen.sh.
+
+The above approach works for as good as all GNOME projects, including GLib, babl, GEGL and GTK+. This makes
it easy to adapt to GIMP's build requirements of these and other libraries even if your distro doesn't meet
them. Let me know if you have problems!
+
+<small>
+Originally published at:
+[http://www.chromecode.com/2009/12/best-way-to-keep-up-with-gimp-from-git_26.html](http://www.chromecode.com/2009/12/best-way-to-keep-up-with-gimp-from-git_26.html)
+</small>
diff --git a/content/source/index.md b/content/source/index.md
index 4a055a6..4a5f185 100644
--- a/content/source/index.md
+++ b/content/source/index.md
@@ -1,219 +1,219 @@
-Title: GIMP From Source
-Date: 2015-08-17T15:38:06-05:00
-Modified: 2015-08-17T15:38:12-05:00
-Authors: Pat David
-Status: hidden
-
-<style>
-table {
-max-width: 40rem;
-font-size: 0.85rem;
-margin: 1rem auto;
-}
-table td {
- padding: 0.25rem;
- border: solid 1px #eee;
-}
-</style>
-
-
-The official distribution of GIMP is the source code, distributed in tar files from the GIMP FTP site and
its [mirrors](/downloads/#mirrors). The same source code can be compiled to create binaries for different
platforms such as [GNU/Linux](/unix/), [Microsoft Windows](/windows/), [Mac OS X](/macintosh/),
[Solaris](/unix/) and many others.
-
-* [GIMP Source Code](#source)
-* [GIMP Requirements](#requirements)
-* [GIMP from Git](#gimp_from_git)
-* [Optional packages](#optional_packages)
-
-### Stable releases
-
-Is recommended for most users. Pre-compiled binaries of the stable GIMP are usually available for many
platforms (see the platform-specific pages for more details), so you do not even have to compile the code
yourself.
-
-### Development releases
-
-For those who want to check the progress towards the next stable release, and who want to help the
developers by testing the code and reporting bugs. The development version contains more features than the
stable version but it may crash from time to time so be sure to save your work often. If you are using this
version, it is a good idea to subscribe to some of the GIMP [mailing lists](/mail_lists.html) (gimp-user or
gimp-developer) so that you can follow the discussions about new features and known bugs.
-
-### Git repository
-
-This is for those who want to live on the bleeding edge. This will give you the latest version of the source
code with the latest features, but also with the latest bugs (eeek!). The repository contains several
versions of the code called "branches" so you can fetch the latest version ("trunk") or a stable version from
a maintenance branch. If you intend to [contribute](/develop/) to the development of GIMP, then you should
try using Git. As the code is constantly evolving and features are added (or removed) every day, you should
have a look at the [developers' site](http://wiki.gimp.org/) and subscribe to the gimp-developer mailing list
if you compile the code from Git.
-
-## GIMP Source Code
-
-The GIMP source code is distributed as tarballs. It is available from the GIMP FTP site and its
[mirrors](/downloads/#mirrors).
-
-## GIMP Requirements
-
-All requirements below must be met to be able compiling GIMP from source. This list might change depending
on the releases being worked on during development of GIMP. Look at the files INSTALL and README in the
tarballs for details.
-
-### Stable version 2.8.x
-
-<table markdown='span' >
-<tbody>
-<tr>
-<th>Package</th>
-<th>Version</th>
-<th>FTP</th>
-<th>HTTP</th>
-<th>Description</th>
-</tr>
-<tr>
-<td>pkg-config</td>
-<td>0.16.0 or newer</td>
-<td>-</td>
-<td>[Download](http://www.freedesktop.org/software/pkgconfig/)</td>
-<td>A system for managing library compile/link flags</td>
-</tr>
-<tr>
-<td>GTK+</td>
-<td>2.24.10 or newer</td>
-<td>[Download](ftp://ftp.gtk.org/pub/gtk/)</td>
-<td>-</td>
-<td>The GIMP toolkit</td>
-</tr>
-<tr>
-<td>GLib</td>
-<td>2.30.2 or newer</td>
-<td>[Download](ftp://ftp.gtk.org/pub/glib)</td>
-<td>-</td>
-<td>Glib Convenience Library</td>
-</tr>
-<tr>
-<td>Pango</td>
-<td>1.29.4 or newer</td>
-<td>[Download](ftp://ftp.gtk.org/pub/pango)</td>
-<td>-</td>
-<td>Text layout engine, GIMP also requires PangoCairo — a Pango backend using Cairo</td>
-</tr>
-<tr>
-<td>Fontconfig</td>
-<td>2.2.0 or newer</td>
-<td>-</td>
-<td>[Download](http://freedesktop.org/fontconfig/release/)</td>
-<td>Font Configuration</td>
-</tr>
-<tr>
-<td>babl</td>
-<td>0.1.10 or newer</td>
-<td>[Download](//download.gimp.org/pub/babl/)</td>
-<td>-</td>
-<td>Pixel format translation library</td>
-</tr>
-<tr>
-<td>GEGL</td>
-<td>0.2.0 or newer</td>
-<td>[Download](//download.gimp.org/pub/gegl/)</td>
-<td>-</td>
-<td>Generic Graphics Library</td>
-</tr>
-</tbody>
-</table>
-
-
-## GIMP from Git
-
-The source code of GIMP is maintained in the GNOME Git repository. Besides offering version tracking,
branching, avanced diff support and else, this repository grants everyone access to the latest revision of
the GIMP source code.
- Follow this guide and you will have the most recent GIMP in no time:
-
-* [Best way to keep up with GIMP from git](/source/howtos/gimp-git-build.html)
-
-To find out more about GIMP development, [http://wiki.gimp.org/](http://wiki.gimp.org/) should answer the
questions you have.
-
-## <a name="optional_packages">Optional packages</a>
-
-To make it easy for you to understand how to get GIMP and what is required to run GIMP, the list of packages
has been done below. Not only is the list for the required packages but also for the packages that can be
added to support other things like fileformats etc.
-
-<table markdown="span">
-<tbody>
-<tr>
-<th>Package</th>
-<th>FTP</th>
-<th>HTTP</th>
-<th>Description</th>
-<th>Dependency</th>
-</tr>
-<tr>
-<td>aalib</td>
-<td>-</td>
-<td>[Download](http://aa-project.sourceforge.net/aalib/)</td>
-<td>ASCII art library</td>
-<td>Optional</td>
-</tr>
-<tr>
-<td>libexif</td>
-<td>-</td>
-<td>[Download](http://sourceforge.net/projects/libexif)</td>
-<td>EXIF tag support for JPEGs</td>
-<td>Optional</td>
-</tr>
-<tr>
-<td>libjpeg</td>
-<td>[Download](ftp://ftp.uu.net/graphics/jpeg/)</td>
-<td>-</td>
-<td>JPEG support</td>
-<td>Optional (explicit disable)</td>
-</tr>
-<tr>
-<td>libpng</td>
-<td>-</td>
-<td>[Download](http://www.libpng.org/)</td>
-<td>PNG support</td>
-<td>Optional (explicit disable)</td>
-</tr>
-<tr>
-<td>libtiff</td>
-<td>-</td>
-<td>[Download](http://www.remotesensing.org/libtiff/)</td>
-<td>TIFF support</td>
-<td>Optional (explicit disable)</td>
-</tr>
-<tr>
-<td>libmng</td>
-<td>-</td>
-<td>[Download](http://www.libmng.com/)</td>
-<td>MNG support</td>
-<td>Optional (plugin won't be built)</td>
-</tr>
-<tr>
-<td>libxpm</td>
-<td>[Download](ftp://ftp.x.org/contrib/libraries/)</td>
-<td>[Download](http://koala.ilog.fr/ftp/pub/xpm/)</td>
-<td>XPM support</td>
-<td>Optional</td>
-</tr>
-<tr>
-<td>librsvg</td>
-<td>[Download](ftp://ftp.gnome.org/mirror/gnome.org/sources/librsvg/)</td>
-<td>[Download](http://librsvg.sourceforge.net/)</td>
-<td>Scalable Vector Graphics</td>
-<td>Optional (plugin won't be built)</td>
-</tr>
-<tr>
-<td>libwmf</td>
-<td>-</td>
-<td>[Download](http://wvware.sourceforge.net/libwmf.html)</td>
-<td>Library to convert wmf files</td>
-<td>Optional (plugin won't be built)</td>
-</tr>
-<tr>
-<td>webkit</td>
-<td>-</td>
-<td>[Download](http://live.gnome.org/WebKitGtk)</td>
-<td>HTML renderer and web content engine</td>
-<td>Optional (Help Browser won't be built)</td>
-</tr>
-<tr>
-<td>zlib</td>
-<td>-</td>
-<td>[Download](http://www.gzip.org/zlib/)</td>
-<td>Compression routines</td>
-<td>Optional</td>
-</tr>
-<tr>
-<td>Python</td>
-<td>[Download](ftp://ftp.python.org/pub/python/)</td>
-<td>[Download](http://www.python.org/)</td>
-<td>Python support</td>
-<td>Optional</td>
-</tr>
-</tbody>
-</table>
-
+Title: GIMP From Source
+Date: 2015-08-17T15:38:06-05:00
+Modified: 2015-08-17T15:38:12-05:00
+Authors: Pat David
+Status: hidden
+
+<style>
+table {
+max-width: 40rem;
+font-size: 0.85rem;
+margin: 1rem auto;
+}
+table td {
+ padding: 0.25rem;
+ border: solid 1px #eee;
+}
+</style>
+
+
+The official distribution of GIMP is the source code, distributed in tar files from the GIMP FTP site and
its [mirrors](/downloads/#mirrors). The same source code can be compiled to create binaries for different
platforms such as [GNU/Linux](/unix/), [Microsoft Windows](/windows/), [Mac OS X](/macintosh/),
[Solaris](/unix/) and many others.
+
+* [GIMP Source Code](#source)
+* [GIMP Requirements](#requirements)
+* [GIMP from Git](#gimp_from_git)
+* [Optional packages](#optional_packages)
+
+### Stable releases
+
+Is recommended for most users. Pre-compiled binaries of the stable GIMP are usually available for many
platforms (see the platform-specific pages for more details), so you do not even have to compile the code
yourself.
+
+### Development releases
+
+For those who want to check the progress towards the next stable release, and who want to help the
developers by testing the code and reporting bugs. The development version contains more features than the
stable version but it may crash from time to time so be sure to save your work often. If you are using this
version, it is a good idea to subscribe to some of the GIMP [mailing lists](/mail_lists.html) (gimp-user or
gimp-developer) so that you can follow the discussions about new features and known bugs.
+
+### Git repository
+
+This is for those who want to live on the bleeding edge. This will give you the latest version of the source
code with the latest features, but also with the latest bugs (eeek!). The repository contains several
versions of the code called "branches" so you can fetch the latest version ("trunk") or a stable version from
a maintenance branch. If you intend to [contribute](/develop/) to the development of GIMP, then you should
try using Git. As the code is constantly evolving and features are added (or removed) every day, you should
have a look at the [developers' site](http://wiki.gimp.org/) and subscribe to the gimp-developer mailing list
if you compile the code from Git.
+
+## GIMP Source Code
+
+The GIMP source code is distributed as tarballs. It is available from the GIMP FTP site and its
[mirrors](/downloads/#mirrors).
+
+## GIMP Requirements
+
+All requirements below must be met to be able compiling GIMP from source. This list might change depending
on the releases being worked on during development of GIMP. Look at the files INSTALL and README in the
tarballs for details.
+
+### Stable version 2.8.x
+
+<table markdown='span' >
+<tbody>
+<tr>
+<th>Package</th>
+<th>Version</th>
+<th>FTP</th>
+<th>HTTP</th>
+<th>Description</th>
+</tr>
+<tr>
+<td>pkg-config</td>
+<td>0.16.0 or newer</td>
+<td>-</td>
+<td>[Download](http://www.freedesktop.org/software/pkgconfig/)</td>
+<td>A system for managing library compile/link flags</td>
+</tr>
+<tr>
+<td>GTK+</td>
+<td>2.24.10 or newer</td>
+<td>[Download](ftp://ftp.gtk.org/pub/gtk/)</td>
+<td>-</td>
+<td>The GIMP toolkit</td>
+</tr>
+<tr>
+<td>GLib</td>
+<td>2.30.2 or newer</td>
+<td>[Download](ftp://ftp.gtk.org/pub/glib)</td>
+<td>-</td>
+<td>Glib Convenience Library</td>
+</tr>
+<tr>
+<td>Pango</td>
+<td>1.29.4 or newer</td>
+<td>[Download](ftp://ftp.gtk.org/pub/pango)</td>
+<td>-</td>
+<td>Text layout engine, GIMP also requires PangoCairo — a Pango backend using Cairo</td>
+</tr>
+<tr>
+<td>Fontconfig</td>
+<td>2.2.0 or newer</td>
+<td>-</td>
+<td>[Download](http://freedesktop.org/fontconfig/release/)</td>
+<td>Font Configuration</td>
+</tr>
+<tr>
+<td>babl</td>
+<td>0.1.10 or newer</td>
+<td>[Download](//download.gimp.org/pub/babl/)</td>
+<td>-</td>
+<td>Pixel format translation library</td>
+</tr>
+<tr>
+<td>GEGL</td>
+<td>0.2.0 or newer</td>
+<td>[Download](//download.gimp.org/pub/gegl/)</td>
+<td>-</td>
+<td>Generic Graphics Library</td>
+</tr>
+</tbody>
+</table>
+
+
+## GIMP from Git
+
+The source code of GIMP is maintained in the GNOME Git repository. Besides offering version tracking,
branching, avanced diff support and else, this repository grants everyone access to the latest revision of
the GIMP source code.
+ Follow this guide and you will have the most recent GIMP in no time:
+
+* [Best way to keep up with GIMP from git](/source/howtos/gimp-git-build.html)
+
+To find out more about GIMP development, [http://wiki.gimp.org/](http://wiki.gimp.org/) should answer the
questions you have.
+
+## <a name="optional_packages">Optional packages</a>
+
+To make it easy for you to understand how to get GIMP and what is required to run GIMP, the list of packages
has been done below. Not only is the list for the required packages but also for the packages that can be
added to support other things like fileformats etc.
+
+<table markdown="span">
+<tbody>
+<tr>
+<th>Package</th>
+<th>FTP</th>
+<th>HTTP</th>
+<th>Description</th>
+<th>Dependency</th>
+</tr>
+<tr>
+<td>aalib</td>
+<td>-</td>
+<td>[Download](http://aa-project.sourceforge.net/aalib/)</td>
+<td>ASCII art library</td>
+<td>Optional</td>
+</tr>
+<tr>
+<td>libexif</td>
+<td>-</td>
+<td>[Download](http://sourceforge.net/projects/libexif)</td>
+<td>EXIF tag support for JPEGs</td>
+<td>Optional</td>
+</tr>
+<tr>
+<td>libjpeg</td>
+<td>[Download](ftp://ftp.uu.net/graphics/jpeg/)</td>
+<td>-</td>
+<td>JPEG support</td>
+<td>Optional (explicit disable)</td>
+</tr>
+<tr>
+<td>libpng</td>
+<td>-</td>
+<td>[Download](http://www.libpng.org/)</td>
+<td>PNG support</td>
+<td>Optional (explicit disable)</td>
+</tr>
+<tr>
+<td>libtiff</td>
+<td>-</td>
+<td>[Download](http://www.remotesensing.org/libtiff/)</td>
+<td>TIFF support</td>
+<td>Optional (explicit disable)</td>
+</tr>
+<tr>
+<td>libmng</td>
+<td>-</td>
+<td>[Download](http://www.libmng.com/)</td>
+<td>MNG support</td>
+<td>Optional (plugin won't be built)</td>
+</tr>
+<tr>
+<td>libxpm</td>
+<td>[Download](ftp://ftp.x.org/contrib/libraries/)</td>
+<td>[Download](http://koala.ilog.fr/ftp/pub/xpm/)</td>
+<td>XPM support</td>
+<td>Optional</td>
+</tr>
+<tr>
+<td>librsvg</td>
+<td>[Download](ftp://ftp.gnome.org/mirror/gnome.org/sources/librsvg/)</td>
+<td>[Download](http://librsvg.sourceforge.net/)</td>
+<td>Scalable Vector Graphics</td>
+<td>Optional (plugin won't be built)</td>
+</tr>
+<tr>
+<td>libwmf</td>
+<td>-</td>
+<td>[Download](http://wvware.sourceforge.net/libwmf.html)</td>
+<td>Library to convert wmf files</td>
+<td>Optional (plugin won't be built)</td>
+</tr>
+<tr>
+<td>webkit</td>
+<td>-</td>
+<td>[Download](http://live.gnome.org/WebKitGtk)</td>
+<td>HTML renderer and web content engine</td>
+<td>Optional (Help Browser won't be built)</td>
+</tr>
+<tr>
+<td>zlib</td>
+<td>-</td>
+<td>[Download](http://www.gzip.org/zlib/)</td>
+<td>Compression routines</td>
+<td>Optional</td>
+</tr>
+<tr>
+<td>Python</td>
+<td>[Download](ftp://ftp.python.org/pub/python/)</td>
+<td>[Download](http://www.python.org/)</td>
+<td>Python support</td>
+<td>Optional</td>
+</tr>
+</tbody>
+</table>
+
diff --git a/content/tutorials/3d_Logo/index.md b/content/tutorials/3d_Logo/index.md
index 48fef1b..9ff5353 100644
--- a/content/tutorials/3d_Logo/index.md
+++ b/content/tutorials/3d_Logo/index.md
@@ -1,256 +1,256 @@
-Title: 3-D Floating Logo
-Date: 2015-08-17T16:40:00-05:00
-Modified: 2015-08-17T16:40:05-05:00
-Author: Mel Boyce
-Summary: A quick look at some easy features.
-
-<small>
-Text and images Copyright (C) 2002 [Mel Boyce](mailto:syngin-at-gimp-dot-org) and may not be used without
permission of the author.
-</small>
-
-## Intention
-
-This tutorial is aimed squarely at the novice GIMP user. The more experienced user may find some techniques
here useful. This is the same procedure I used to create the logo on my homepage, albeit with slightly
different settings. I'll point out the differences as I go along. I've taken a lot of screen shots to support
this tutorial, so enjoy :)
-
-## Step 1
-
-<figure>
-<img src="{filename}logo-00.png" alt="Floating Logo" />
-</figure>
-
-
-Fire up GIMP and create a new image. I used a white background at 500px by 200px. I feel this size it
adequate as my website at the time of writing uses 500px tables.
-
-## Step 2
-
-<figure>
-<img src="{filename}logo-01.png" alt="Floating Logo" />
-</figure>
-
-Start by laying down some text that is wider than 400px and not too thin. I've used a font called Pricedown.
The text should be created as a new layer. If you use GIMP FreeType then it is done for you, otherwise click
the New Layer button in the Layers, Channels, & Paths dialog (looks like a blank piece of paper). It will
help to change the layer size to that of the image. Do so by accessing the Layers menu (right click or
Control+Click on the layer you wish to operate on) and select Layer to Imagesize.
-
-## Step 3
-
-<figure>
-<img src="{filename}logo-02.png" alt="Floating Logo" />
-</figure>
-
-Duplicate the text layer (text) twice. One for the highlight effect (highlight) and one for the shaded part
of the effect (lowlight). The highlight layer needs to be white, so select that layer, check the Keep Trans.
box on the Layers, Channels, & Paths dialog, and fill it with white. You can do this easily by dragging the
white color swatch from the toolbox over to the image (assuming that the highlight layer is currently
selected). Keep Trans. means "Keep Transparency"; this will ensure that any transformations or fills made to
that layer will only affect the non-transparent part of the image.
-
-## Step 4
-
-<figure>
-<img src="{filename}logo-03.png" alt="Floating Logo" />
-</figure>
-
-Duplicate the text layer again and move it to the top of the Layers stack (use the little up facing arrow
head on the Layers, Channels, & Paths dialog). Make sure that Keep Trans. is un-checked and then blur it. I
used Gaussian Blur (RLE) at 10 pixels. When I did the original logo, it was set lower than this to make the
effect less rounded.
-
-You will need to make sure that the layer boundary is larger than the layer so that the blur can spread
nicely. Step 2 mentions this.
-
-## Step 5
-
-<figure>
-<img src="{filename}logo-04.png" alt="Floating Logo" />
-</figure>
-
-Duplicate the blurred layer once (tmp1 and tmp2). These layers are used to create the edge lighting for the
text.
-
-## Step 6
-
-<figure>
-<img src="{filename}logo-05.png" alt="Floating Logo" />
-</figure>
-
-Nudge one of the blurred layers (tmp1) down and to the right about 5 pixels. The precise number of pixels
depends on how blurred and thus how round the text will appear to be, so use your best judgement. You can
nudge layers my using the Move tool and the cursor keys on your keyboard. It doesn't matter which of the
blurred layers you use in this step, as long as you know which one you didn't move \x{2013} you'll be needing
to do a very similar thing to that one soon.
-
-## Step 7
-
-<figure>
-<img src="{filename}logo-06.png" alt="Floating Logo" />
-</figure>
-
-Now create a selection using the blurred layer (the one you moved in step 6) using Alpha to Selection. This
selection is a precise selection based on the layer and includes alpha (transparency) information. Handy
stuff. You'll notice that I've turned off the layer below (the other blurred layer). This was done to make
sure I could see how far I moved this layer during step 6.
-
-## Step 8
-
-<figure>
-<img src="{filename}logo-07.png" alt="Floating Logo" />
-</figure>
-
-Now that the layer is selected...
-
-## Step 9
-
-<figure>
-<img src="{filename}logo-08.png" alt="Floating Logo" />
-</figure>
-
-Select the highlight layer and...
-
-## Step 10
-
-<figure>
-<img src="{filename}logo-09.png" alt="Floating Logo" />
-</figure>
-
-Cut (edit/cut or <kbd>CTRL+X</kbd> on PC or <kbd>Command+X</kbd> on Mac). This will remove the blurred
layers selection from the highlight layer. You could do this with channel masks, but I'm a man of simple
needs and wants. There's another step after this that I haven't documented, but that's because it's the same
thing again (steps 6-10) but with the other layer (tmp2: see steps 5 and 6). Move (nudge) that layer in the
opposite direction (up and to the left about 5 pixels), then make the cut from the lowlight layer. Once
you're done, delete the two blurred layers (tmp1 and tmp2).
-
-## Step 11
-
-<figure>
-<img src="{filename}logo-10.png" alt="Floating Logo" />
-</figure>
-
-I like to take quasi-breaks while doing some images, and this is one of those times. A good time to roll a
cigarette or grab a cup coffee. I also tend to clean up temporary layers occasionally.
-
-## Step 12
-
-<figure>
-<img src="{filename}logo-11.png" alt="Floating Logo" />
-</figure>
-
-Now we'll add the first elements of 3D-ness to the logo. The original text layer is the base layer for any
color you want to add. I'll use grey70, but you could just as easily use any old color you like. It's a good
idea to play with this as you can get some funky plastic logos too. Make sure Keep Trans. is checked when you
fill the layer.
-
-## Step 13
-
-<figure>
-<img src="{filename}logo-12.png" alt="Floating Logo" />
-</figure>
-
-As you can see, it's starting to look like something now.
-
-## Step 14
-
-<figure>
-<img src="{filename}logo-13.png" alt="Floating Logo" />
-</figure>
-
-Click the blank piece of paper on the Layers, Channels, & Paths dialog and make a new transparent layer
called outline. Move this new layer down the layers stack until it's underneath the original text layer.
-
-## Step 15
-
-<figure>
-<img src="{filename}logo-14.png" alt="Floating Logo" />
-</figure>
-
-Select the original text layer (the one you added some color to) and do the Alpha to Selection trick again.
Right click on the image and use <span class="filter"><Image> Select -> Grow</span>. This will make the new
selection larger by a number of pixels - I used a value of 2 pixels. Once you have a selection, be sure to
reselect the new layer (outline) so that you can fill it (step 17). And below is what it looks like.
-
-## Step 16
-
-<figure>
-<img src="{filename}logo-15.png" alt="Floating Logo" />
-</figure>
-
-And this is what it looks like.
-
-## Step 17
-
-<figure>
-<img src="{filename}logo-16.png" alt="Floating Logo" />
-</figure>
-
-Fill the layer with black and deselect (<kbd>CTRL+SHIFT+A</kbd> on PC or <kbd>Command+SHIFT+A</kbd> on Mac).
As you can see, the image now has more background contrast. Now, duplicate that layer and lower the copy
below the original outline layer. Make sure that Keep Trans. is not checked, and blur it. I like soft
shadows, so I used a Gaussian Blur (RLE) of about 30 pixels. Drop the Opacity of the layer down to about 50
and nudge it to the right and down until it looks okay.
-
-A nice way to fill selection areas or layers that have Keep Trans. selected, is to simply drag the color
from the toolbox color swatch to the layer.
-
-## Step 18
-
-<figure>
-<img src="{filename}logo-17.png" alt="Floating Logo" />
-</figure>
-
-This is what the Layers, Channels, & Paths dialog should look like.
-
-## Step 19
-
-<figure>
-<img src="{filename}logo-18.png" alt="Floating Logo" />
-</figure>
-
-I've duplicated the highlight and lowlight layers and made them all blend with the lower layers using the
Overlay mode. This helps to make the edges more 3D.
-
-## Step 20
-
-<figure>
-<img src="{filename}logo-19.png" alt="Floating Logo" />
-</figure>
-
-Create a new transparent layer called rust and select the bezier tool (shown here as the depressed button).
-
-## Step 21
-
-<figure>
-<img src="{filename}logo-20.png" alt="Floating Logo" />
-</figure>
-
-Rust isn't uniform and I've decided to only worry about the lower half of the letters. Use the bezier tool
on the new rust layer to start a selection that looks like...
-
-## Step 22
-
-<figure>
-<img src="{filename}logo-21.png" alt="Floating Logo" />
-</figure>
-
-This. Click inside the bezier path once you close it (close it by clicking one the first node). This will
create a selection. Use <span class="filter"><Image> Select -> Feather</span> to feather (blur) the
selection. I used a value of about 10 pixels.
-
-## Step 23
-
-<figure>
-<img src="{filename}logo-22.png" alt="Floating Logo" />
-</figure>
-
-Pick a nice bright orange or brown color for the rust. My site logo used a reddy-borwn color, but here I've
chosen a bright orange. Fill the selection with it. Using the famed Alpha to Selection move, get the
selection for the original text layer. Once you have that selection area, click the rust layer to make it
active. Invert the selection (<kbd>CTRL+I</kbd> or <kbd>Command+I</kbd>) and Cut. This will leave only the
part of the rust layer that actually covers the letters and not the extra.
-
-## Step 24
-
-<figure>
-<img src="{filename}logo-23.png" alt="Floating Logo" />
-</figure>
-
-Change the Layer Mode of the rust layer to Muliply (Burn).
-
-## Step 25
-
-<figure>
-<img src="{filename}logo-24.png" alt="Floating Logo" />
-</figure>
-
-The image should now look a little like this. Don't worry, it'll look better soon.
-
-## Step 26
-
-<figure>
-<img src="{filename}logo-25.png" alt="Floating Logo" />
-</figure>
-
-With the rust layer selected, add a Layer Mask.
-
-## Step 27
-
-<figure>
-<img src="{filename}logo-26.png" alt="Floating Logo" />
-</figure>
-
-Making sure that you reset the color swatches on the toolbox, use the gradient tool to make a gradient in
the Layer Mask so it looks like this.
-
-## Step 28
-
-<figure>
-<img src="{filename}logo-27.png" alt="Floating Logo" />
-</figure>
-
-The image should now look like this.
-
-## Final
-
-<figure>
-<img src="{filename}logo-28.png" alt="Floating Logo" />
-</figure>
-
-With a little playing around you can get to this. I duplicated the rust layer and moved them (the original
rust and the copy) down the stack until the highlight and lowlight layers were above them. I also duplicated
the original text layer, switched on Keep Trans., and used <span class="filter"><Image> Render -> Clouds ->
Solid Noise</span> to add a bit of interest to the layer. Try using the Curves tool to help with this. You
may also notice that the outline layer is blurred. Sometimes this can help. The idea is, try stuff and find
out.
-
-Well, thats it. Hope that taught you the power of selections and layer modes to some degree. There are many
people who tout the use of channel masks, but don't under estimate the power of selections to do your dirty
work.
-
-<small>
-Text and images Copyright (C) 2002 [Mel Boyce](mailto:syngin-at-gimp-dot-org) and may not be used without
permission of the author.
-</small>
+Title: 3-D Floating Logo
+Date: 2015-08-17T16:40:00-05:00
+Modified: 2015-08-17T16:40:05-05:00
+Author: Mel Boyce
+Summary: A quick look at some easy features.
+
+<small>
+Text and images Copyright (C) 2002 [Mel Boyce](mailto:syngin-at-gimp-dot-org) and may not be used without
permission of the author.
+</small>
+
+## Intention
+
+This tutorial is aimed squarely at the novice GIMP user. The more experienced user may find some techniques
here useful. This is the same procedure I used to create the logo on my homepage, albeit with slightly
different settings. I'll point out the differences as I go along. I've taken a lot of screen shots to support
this tutorial, so enjoy :)
+
+## Step 1
+
+<figure>
+<img src="{filename}logo-00.png" alt="Floating Logo" />
+</figure>
+
+
+Fire up GIMP and create a new image. I used a white background at 500px by 200px. I feel this size it
adequate as my website at the time of writing uses 500px tables.
+
+## Step 2
+
+<figure>
+<img src="{filename}logo-01.png" alt="Floating Logo" />
+</figure>
+
+Start by laying down some text that is wider than 400px and not too thin. I've used a font called Pricedown.
The text should be created as a new layer. If you use GIMP FreeType then it is done for you, otherwise click
the New Layer button in the Layers, Channels, & Paths dialog (looks like a blank piece of paper). It will
help to change the layer size to that of the image. Do so by accessing the Layers menu (right click or
Control+Click on the layer you wish to operate on) and select Layer to Imagesize.
+
+## Step 3
+
+<figure>
+<img src="{filename}logo-02.png" alt="Floating Logo" />
+</figure>
+
+Duplicate the text layer (text) twice. One for the highlight effect (highlight) and one for the shaded part
of the effect (lowlight). The highlight layer needs to be white, so select that layer, check the Keep Trans.
box on the Layers, Channels, & Paths dialog, and fill it with white. You can do this easily by dragging the
white color swatch from the toolbox over to the image (assuming that the highlight layer is currently
selected). Keep Trans. means "Keep Transparency"; this will ensure that any transformations or fills made to
that layer will only affect the non-transparent part of the image.
+
+## Step 4
+
+<figure>
+<img src="{filename}logo-03.png" alt="Floating Logo" />
+</figure>
+
+Duplicate the text layer again and move it to the top of the Layers stack (use the little up facing arrow
head on the Layers, Channels, & Paths dialog). Make sure that Keep Trans. is un-checked and then blur it. I
used Gaussian Blur (RLE) at 10 pixels. When I did the original logo, it was set lower than this to make the
effect less rounded.
+
+You will need to make sure that the layer boundary is larger than the layer so that the blur can spread
nicely. Step 2 mentions this.
+
+## Step 5
+
+<figure>
+<img src="{filename}logo-04.png" alt="Floating Logo" />
+</figure>
+
+Duplicate the blurred layer once (tmp1 and tmp2). These layers are used to create the edge lighting for the
text.
+
+## Step 6
+
+<figure>
+<img src="{filename}logo-05.png" alt="Floating Logo" />
+</figure>
+
+Nudge one of the blurred layers (tmp1) down and to the right about 5 pixels. The precise number of pixels
depends on how blurred and thus how round the text will appear to be, so use your best judgement. You can
nudge layers my using the Move tool and the cursor keys on your keyboard. It doesn't matter which of the
blurred layers you use in this step, as long as you know which one you didn't move \x{2013} you'll be needing
to do a very similar thing to that one soon.
+
+## Step 7
+
+<figure>
+<img src="{filename}logo-06.png" alt="Floating Logo" />
+</figure>
+
+Now create a selection using the blurred layer (the one you moved in step 6) using Alpha to Selection. This
selection is a precise selection based on the layer and includes alpha (transparency) information. Handy
stuff. You'll notice that I've turned off the layer below (the other blurred layer). This was done to make
sure I could see how far I moved this layer during step 6.
+
+## Step 8
+
+<figure>
+<img src="{filename}logo-07.png" alt="Floating Logo" />
+</figure>
+
+Now that the layer is selected...
+
+## Step 9
+
+<figure>
+<img src="{filename}logo-08.png" alt="Floating Logo" />
+</figure>
+
+Select the highlight layer and...
+
+## Step 10
+
+<figure>
+<img src="{filename}logo-09.png" alt="Floating Logo" />
+</figure>
+
+Cut (edit/cut or <kbd>CTRL+X</kbd> on PC or <kbd>Command+X</kbd> on Mac). This will remove the blurred
layers selection from the highlight layer. You could do this with channel masks, but I'm a man of simple
needs and wants. There's another step after this that I haven't documented, but that's because it's the same
thing again (steps 6-10) but with the other layer (tmp2: see steps 5 and 6). Move (nudge) that layer in the
opposite direction (up and to the left about 5 pixels), then make the cut from the lowlight layer. Once
you're done, delete the two blurred layers (tmp1 and tmp2).
+
+## Step 11
+
+<figure>
+<img src="{filename}logo-10.png" alt="Floating Logo" />
+</figure>
+
+I like to take quasi-breaks while doing some images, and this is one of those times. A good time to roll a
cigarette or grab a cup coffee. I also tend to clean up temporary layers occasionally.
+
+## Step 12
+
+<figure>
+<img src="{filename}logo-11.png" alt="Floating Logo" />
+</figure>
+
+Now we'll add the first elements of 3D-ness to the logo. The original text layer is the base layer for any
color you want to add. I'll use grey70, but you could just as easily use any old color you like. It's a good
idea to play with this as you can get some funky plastic logos too. Make sure Keep Trans. is checked when you
fill the layer.
+
+## Step 13
+
+<figure>
+<img src="{filename}logo-12.png" alt="Floating Logo" />
+</figure>
+
+As you can see, it's starting to look like something now.
+
+## Step 14
+
+<figure>
+<img src="{filename}logo-13.png" alt="Floating Logo" />
+</figure>
+
+Click the blank piece of paper on the Layers, Channels, & Paths dialog and make a new transparent layer
called outline. Move this new layer down the layers stack until it's underneath the original text layer.
+
+## Step 15
+
+<figure>
+<img src="{filename}logo-14.png" alt="Floating Logo" />
+</figure>
+
+Select the original text layer (the one you added some color to) and do the Alpha to Selection trick again.
Right click on the image and use <span class="filter"><Image> Select -> Grow</span>. This will make the new
selection larger by a number of pixels - I used a value of 2 pixels. Once you have a selection, be sure to
reselect the new layer (outline) so that you can fill it (step 17). And below is what it looks like.
+
+## Step 16
+
+<figure>
+<img src="{filename}logo-15.png" alt="Floating Logo" />
+</figure>
+
+And this is what it looks like.
+
+## Step 17
+
+<figure>
+<img src="{filename}logo-16.png" alt="Floating Logo" />
+</figure>
+
+Fill the layer with black and deselect (<kbd>CTRL+SHIFT+A</kbd> on PC or <kbd>Command+SHIFT+A</kbd> on Mac).
As you can see, the image now has more background contrast. Now, duplicate that layer and lower the copy
below the original outline layer. Make sure that Keep Trans. is not checked, and blur it. I like soft
shadows, so I used a Gaussian Blur (RLE) of about 30 pixels. Drop the Opacity of the layer down to about 50
and nudge it to the right and down until it looks okay.
+
+A nice way to fill selection areas or layers that have Keep Trans. selected, is to simply drag the color
from the toolbox color swatch to the layer.
+
+## Step 18
+
+<figure>
+<img src="{filename}logo-17.png" alt="Floating Logo" />
+</figure>
+
+This is what the Layers, Channels, & Paths dialog should look like.
+
+## Step 19
+
+<figure>
+<img src="{filename}logo-18.png" alt="Floating Logo" />
+</figure>
+
+I've duplicated the highlight and lowlight layers and made them all blend with the lower layers using the
Overlay mode. This helps to make the edges more 3D.
+
+## Step 20
+
+<figure>
+<img src="{filename}logo-19.png" alt="Floating Logo" />
+</figure>
+
+Create a new transparent layer called rust and select the bezier tool (shown here as the depressed button).
+
+## Step 21
+
+<figure>
+<img src="{filename}logo-20.png" alt="Floating Logo" />
+</figure>
+
+Rust isn't uniform and I've decided to only worry about the lower half of the letters. Use the bezier tool
on the new rust layer to start a selection that looks like...
+
+## Step 22
+
+<figure>
+<img src="{filename}logo-21.png" alt="Floating Logo" />
+</figure>
+
+This. Click inside the bezier path once you close it (close it by clicking one the first node). This will
create a selection. Use <span class="filter"><Image> Select -> Feather</span> to feather (blur) the
selection. I used a value of about 10 pixels.
+
+## Step 23
+
+<figure>
+<img src="{filename}logo-22.png" alt="Floating Logo" />
+</figure>
+
+Pick a nice bright orange or brown color for the rust. My site logo used a reddy-borwn color, but here I've
chosen a bright orange. Fill the selection with it. Using the famed Alpha to Selection move, get the
selection for the original text layer. Once you have that selection area, click the rust layer to make it
active. Invert the selection (<kbd>CTRL+I</kbd> or <kbd>Command+I</kbd>) and Cut. This will leave only the
part of the rust layer that actually covers the letters and not the extra.
+
+## Step 24
+
+<figure>
+<img src="{filename}logo-23.png" alt="Floating Logo" />
+</figure>
+
+Change the Layer Mode of the rust layer to Muliply (Burn).
+
+## Step 25
+
+<figure>
+<img src="{filename}logo-24.png" alt="Floating Logo" />
+</figure>
+
+The image should now look a little like this. Don't worry, it'll look better soon.
+
+## Step 26
+
+<figure>
+<img src="{filename}logo-25.png" alt="Floating Logo" />
+</figure>
+
+With the rust layer selected, add a Layer Mask.
+
+## Step 27
+
+<figure>
+<img src="{filename}logo-26.png" alt="Floating Logo" />
+</figure>
+
+Making sure that you reset the color swatches on the toolbox, use the gradient tool to make a gradient in
the Layer Mask so it looks like this.
+
+## Step 28
+
+<figure>
+<img src="{filename}logo-27.png" alt="Floating Logo" />
+</figure>
+
+The image should now look like this.
+
+## Final
+
+<figure>
+<img src="{filename}logo-28.png" alt="Floating Logo" />
+</figure>
+
+With a little playing around you can get to this. I duplicated the rust layer and moved them (the original
rust and the copy) down the stack until the highlight and lowlight layers were above them. I also duplicated
the original text layer, switched on Keep Trans., and used <span class="filter"><Image> Render -> Clouds ->
Solid Noise</span> to add a bit of interest to the layer. Try using the Curves tool to help with this. You
may also notice that the outline layer is blurred. Sometimes this can help. The idea is, try stuff and find
out.
+
+Well, thats it. Hope that taught you the power of selections and layer modes to some degree. There are many
people who tout the use of channel masks, but don't under estimate the power of selections to do your dirty
work.
+
+<small>
+Text and images Copyright (C) 2002 [Mel Boyce](mailto:syngin-at-gimp-dot-org) and may not be used without
permission of the author.
+</small>
diff --git a/content/tutorials/Advanced_Animations/index.md b/content/tutorials/Advanced_Animations/index.md
index a498a70..1579d4f 100644
--- a/content/tutorials/Advanced_Animations/index.md
+++ b/content/tutorials/Advanced_Animations/index.md
@@ -1,80 +1,80 @@
-Title: Advanced Animations Tutorial
-Date: 2015-08-17T16:49:18-05:00
-Modified: 2015-08-17T16:49:23-05:00
-Author: Jakub Steiner
-
-<small>
-Text and images Copyright (C) 2002 [Jakub Steiner](mailto:jimmacNOSPAM ximian com) and may not be used
without permission of the author.
-</small>
-
-## Intention
-
-Welcome to the advanced GIMP animation tutorial. Here you'll learn how to use the GAP, GIMP animation
package. It is very advanced, but the user interface might be confusing for some at first. That's why we'll
start with a little theory before we move over to the practical part.
-
-The key function of the GAP is the **move path** dialog. Please go to the "[Using
GAP](/tutorials/Using_GAP/)" tutorial to learn more about the tool.
-
-## Step 1
-
-<figure>
-<a href="gap-static.xcf.bz2"><img src="{filename}gap-static.png" alt="Floating Logo" /></a>
-</figure>
-
-
-To make things easier, we'll start with a ready-to-go static image. To load it into GIMP, just drag the
image above to the GIMP toolbox. In case this doesn't work for you, copy the link by selecting **Copy
Target** or **Copy Link Location** from the image context menu accessible by right-clicking on the image. In
GIMP, choose **Open Location** from the toolbox **File** menu and paste the URL there. Gimp will download the
compressed image and open it for you.
-
-## Step 2
-
-<figure>
-<img src="{filename}gap-duplicate.png" alt="GAP Animation Tutorial" />
-</figure>
-
-Now drag the background layer from the static image to the GIMP toolbar. This will create a new white image
we'll use as a base for our animation. To be able to work with GAP you need to save it in GIMP's native
format, **.xcf**. Create a separate directory for the file, it will fill with many frame files soon. The file
needs to be named like this:
-
-**name-0001.xcf**
-
-You can only change the **name** part. The rest needs to be exactly the way shown. GAP works on series of
.xcf images, so that you can work with layers the same way as you do in static images. You don't have to copy
the file yourself to add a frame. GAP has series of functions to help you manage frames. We'll create a 20
frame animation, so the first thing will be to copy the first frame 19 times using the **video/duplicate
frames** function.
-
-## Step 3
-
-<figure>
-<img src="{filename}gap-source.png" alt="GAP Animation Tutorial" />
-</figure>
-
-<figure>
-<img src="{filename}gap-move.png" alt="GAP Animation Tutorial" />
-</figure>
-
-Now it's time to use the **move path** function. Make sure you have the static image open but use the
function on the white background image. In the dialog, select the logo image as source and make sure you set
the stepmode to **none**! Keep the mode as **normal** and choose some handle mode. I have used **center**, so
use that if you're going to stick with the parameters provided here.
-
-For the logo we'll animate two parameters. First, we'll zoom out the logo so it appears to fly away from the
observer and combine that with opacity increase. For the first animation point use the following parameters:
**x:157, y:74, width:800, height:800, opacity:20**. Keep the rest default. Now add a new animation point by
clicking on the **add point** button. Notice how the status above the button changed to **current key: [ 2 of
2 ]**. Now change the **width, height** and **opacity** back to 100%. You can check the result on any
animation point by navigating to it (using next and previous or other buttons) and clicking on the **update
preview** button. You can also preview the whole animation using the **Anim preview** button. This will
create a new layered image, so don't be impatient, it takes a while.
-
-Adding points to your animation creates linear time segments between those. If you want to create non-linear
animation, just set a specific frame to the active point using the **keyframe** slider. We won't need it for
the logo animation, so let's just press ok for now.
-
-## Step 4
-
-<figure>
-<img src="{filename}gap-navi.png" alt="GAP Animation Tutorial" />
-</figure>
-
-<figure>
-<img src="{filename}gap-final.gif" alt="GAP Animation Tutorial" />
-</figure>
-
-Now we have a rendered sequence of images. You can navigate them easily using the **video/VCR navigator**.
Pressing play on the navigator will call two functions, **frames to image** and **animation playback**, so
it's fast and convenient to use it to check the looks of your animation.
-
-You can also specify the default delay between frames by setting the **framerate** in FPS (frames per
second). The higher the value, the smoother the animation will be, but more frames will be needed. You can
also render only segments of the whole animation by selecting particular frame thumbnails in the navigator
before pressing the play button. Use <kbd>shift</kbd>, <kbd>ctrl</kbd> or drag your mouse to select multiple
frames. If you press <kbd>Shift</kbd> while pressing the play button, the resulting animation-image will be
optimised (as discussed in the simple animation tutorial).
-
-As you can see on the image above, I have added some more movement effects for every source layer of the
static image using only the **move path** dialog. You can now try to recreate the animation yourself, you
know tool to be able to.
-
-## Step 5
-
-All we need to do now is to save the animation. You can choose to go for the GIF format as I did with the
image above, but the filesize is too huge to be widely accepted on the web anyway, so you can consider using
a regular animation format like **avi** (needs special version of the xanim player from
[Loki](http://www.lokigames.com)) or **mpeg1 / 2**.
-
-To save the animation as gif, first apply the **video/frames to image** function. This will create a single
multi-layered image with the specified delay. Now apply the **animation optimize** filter (not that useful in
this case) and finaly index the image to 16 color without using any color dithering. The file will still be
about 170kB, so it's huge. You can consider trying some specialised optimisation software like GIFsicle.
Maybe [MNG](http://www.libmng.com/) with its sprite based animation will make it more suitable for the web.
Rendering will happen on the browser side and I'm very excited about the idea.
-
-Last thing I can't help myslef not to mention is to thank Wolfgang Hofer for making such a great plugin that
takes GIMP functionality to a new level. With GIMP 2 rendering engine we'll probably see more "applications"
like that using GIMP's features to provide us with another area of application. I'd also like to thank the
GIMP developer community to work hard every day to give us the best web gfx tool there is. If you just
started to experience GIMP, don't hesitate and drop by up at **#gimp** on **irc.gimp.org:6669**.
-
-
-<small>
-Text and images Copyright (C) 2002 [Jakub Steiner](mailto:jimmacNOSPAM ximian com) and may not be used
without permission of the author.
-</small>
+Title: Advanced Animations Tutorial
+Date: 2015-08-17T16:49:18-05:00
+Modified: 2015-08-17T16:49:23-05:00
+Author: Jakub Steiner
+
+<small>
+Text and images Copyright (C) 2002 [Jakub Steiner](mailto:jimmacNOSPAM ximian com) and may not be used
without permission of the author.
+</small>
+
+## Intention
+
+Welcome to the advanced GIMP animation tutorial. Here you'll learn how to use the GAP, GIMP animation
package. It is very advanced, but the user interface might be confusing for some at first. That's why we'll
start with a little theory before we move over to the practical part.
+
+The key function of the GAP is the **move path** dialog. Please go to the "[Using
GAP](/tutorials/Using_GAP/)" tutorial to learn more about the tool.
+
+## Step 1
+
+<figure>
+<a href="gap-static.xcf.bz2"><img src="{filename}gap-static.png" alt="Floating Logo" /></a>
+</figure>
+
+
+To make things easier, we'll start with a ready-to-go static image. To load it into GIMP, just drag the
image above to the GIMP toolbox. In case this doesn't work for you, copy the link by selecting **Copy
Target** or **Copy Link Location** from the image context menu accessible by right-clicking on the image. In
GIMP, choose **Open Location** from the toolbox **File** menu and paste the URL there. Gimp will download the
compressed image and open it for you.
+
+## Step 2
+
+<figure>
+<img src="{filename}gap-duplicate.png" alt="GAP Animation Tutorial" />
+</figure>
+
+Now drag the background layer from the static image to the GIMP toolbar. This will create a new white image
we'll use as a base for our animation. To be able to work with GAP you need to save it in GIMP's native
format, **.xcf**. Create a separate directory for the file, it will fill with many frame files soon. The file
needs to be named like this:
+
+**name-0001.xcf**
+
+You can only change the **name** part. The rest needs to be exactly the way shown. GAP works on series of
.xcf images, so that you can work with layers the same way as you do in static images. You don't have to copy
the file yourself to add a frame. GAP has series of functions to help you manage frames. We'll create a 20
frame animation, so the first thing will be to copy the first frame 19 times using the **video/duplicate
frames** function.
+
+## Step 3
+
+<figure>
+<img src="{filename}gap-source.png" alt="GAP Animation Tutorial" />
+</figure>
+
+<figure>
+<img src="{filename}gap-move.png" alt="GAP Animation Tutorial" />
+</figure>
+
+Now it's time to use the **move path** function. Make sure you have the static image open but use the
function on the white background image. In the dialog, select the logo image as source and make sure you set
the stepmode to **none**! Keep the mode as **normal** and choose some handle mode. I have used **center**, so
use that if you're going to stick with the parameters provided here.
+
+For the logo we'll animate two parameters. First, we'll zoom out the logo so it appears to fly away from the
observer and combine that with opacity increase. For the first animation point use the following parameters:
**x:157, y:74, width:800, height:800, opacity:20**. Keep the rest default. Now add a new animation point by
clicking on the **add point** button. Notice how the status above the button changed to **current key: [ 2 of
2 ]**. Now change the **width, height** and **opacity** back to 100%. You can check the result on any
animation point by navigating to it (using next and previous or other buttons) and clicking on the **update
preview** button. You can also preview the whole animation using the **Anim preview** button. This will
create a new layered image, so don't be impatient, it takes a while.
+
+Adding points to your animation creates linear time segments between those. If you want to create non-linear
animation, just set a specific frame to the active point using the **keyframe** slider. We won't need it for
the logo animation, so let's just press ok for now.
+
+## Step 4
+
+<figure>
+<img src="{filename}gap-navi.png" alt="GAP Animation Tutorial" />
+</figure>
+
+<figure>
+<img src="{filename}gap-final.gif" alt="GAP Animation Tutorial" />
+</figure>
+
+Now we have a rendered sequence of images. You can navigate them easily using the **video/VCR navigator**.
Pressing play on the navigator will call two functions, **frames to image** and **animation playback**, so
it's fast and convenient to use it to check the looks of your animation.
+
+You can also specify the default delay between frames by setting the **framerate** in FPS (frames per
second). The higher the value, the smoother the animation will be, but more frames will be needed. You can
also render only segments of the whole animation by selecting particular frame thumbnails in the navigator
before pressing the play button. Use <kbd>shift</kbd>, <kbd>ctrl</kbd> or drag your mouse to select multiple
frames. If you press <kbd>Shift</kbd> while pressing the play button, the resulting animation-image will be
optimised (as discussed in the simple animation tutorial).
+
+As you can see on the image above, I have added some more movement effects for every source layer of the
static image using only the **move path** dialog. You can now try to recreate the animation yourself, you
know tool to be able to.
+
+## Step 5
+
+All we need to do now is to save the animation. You can choose to go for the GIF format as I did with the
image above, but the filesize is too huge to be widely accepted on the web anyway, so you can consider using
a regular animation format like **avi** (needs special version of the xanim player from
[Loki](http://www.lokigames.com)) or **mpeg1 / 2**.
+
+To save the animation as gif, first apply the **video/frames to image** function. This will create a single
multi-layered image with the specified delay. Now apply the **animation optimize** filter (not that useful in
this case) and finaly index the image to 16 color without using any color dithering. The file will still be
about 170kB, so it's huge. You can consider trying some specialised optimisation software like GIFsicle.
Maybe [MNG](http://www.libmng.com/) with its sprite based animation will make it more suitable for the web.
Rendering will happen on the browser side and I'm very excited about the idea.
+
+Last thing I can't help myslef not to mention is to thank Wolfgang Hofer for making such a great plugin that
takes GIMP functionality to a new level. With GIMP 2 rendering engine we'll probably see more "applications"
like that using GIMP's features to provide us with another area of application. I'd also like to thank the
GIMP developer community to work hard every day to give us the best web gfx tool there is. If you just
started to experience GIMP, don't hesitate and drop by up at **#gimp** on **irc.gimp.org:6669**.
+
+
+<small>
+Text and images Copyright (C) 2002 [Jakub Steiner](mailto:jimmacNOSPAM ximian com) and may not be used
without permission of the author.
+</small>
diff --git a/content/tutorials/Anti-Aliased_Threshold/index.md
b/content/tutorials/Anti-Aliased_Threshold/index.md
index 7550c20..dadaf00 100644
--- a/content/tutorials/Anti-Aliased_Threshold/index.md
+++ b/content/tutorials/Anti-Aliased_Threshold/index.md
@@ -1,46 +1,46 @@
-Title: Anti-Aliased Threshold Tutorial
-Date: 2015-08-17T16:49:18-05:00
-Modified: 2015-08-17T16:49:23-05:00
-Author: Ville Pätsi
-
-
-<small>
-Text and images Copyright (C) 2002 [Ville Pätsi](mailto:drcNOSPAM gimp org) and may not be used without
permission of the author.
-</small>
-
-## Intention
-
-The threshold plug-in works by dividing the image into two parts, dark and light, producing a 2 color image.
This is often not the desired result, for some images anti-aliasing is needed, but the threshold plug-in
cannot provide that. With a little utilization of the curves plug-in, we get nice results.
-
-## Problems with the threshold
-
-<figure>
-<img src="{filename}original.jpg" alt="Antialiased Threshold Tutorial" />
-<img src="{filename}threshold.jpg" alt="Antialiased Threshold Tutorial" />
-</figure>
-
-
-On the left you we see the original image that is about to be thresholded, and on the right side we see the
result. The default settings for the Threshold plug-in were used (<span class="filter"><Image> Layers ->
Colors -> Threshold</span>). The resulting image is very blocky and aliased.
-
-## The Curves Trick
-
-<figure>
-<img src="{filename}curves.png" alt="Antialiased Threshold Tutorial" />
-<img src="{filename}finished.jpg" alt="Antialiased Threshold Tutorial" />
-</figure>
-
-First duplicate the image layer by going to the layers dialog, making sure the image layer is selected, and
clicking the duplicate button (fourth from the left). We can use the original layer for some color tricks
later. Now the next thing is to desaturate the image (<span class="filter"><Image> Layers -> Colors ->
Desaturate</span>). This way the colors will not interfere with the fake thresholding. When the layer is
grayscale, select the curves editor (<span class="filter"><Image> Layers -> Colors -> Curves</span>). Now we
can play with the Value "channel". The image on the left displays the settings used for the example image.
The space between the two dots determines how much aa the resulting image will have. The wider the gap, the
more grayscale values it will have, and vice versa. The resulting image can be seen on the right.
-
-## A neat addition
-
-<figure>
-<img src="{filename}effect.jpg" alt="Antialiased Threshold Tutorial" />
-</figure>
-
-If you now take the original image layer, move it over the new one (make sure it has an alpha channel), and
change its mode to "Color" in the layers dialog, you get nice results displayed above.
-
-The original tutorial can be found [here](http://drc.gimp.org/).
-
-<small>
-Text and images Copyright (C) 2002 [Ville Pätsi](mailto:drcNOSPAM gimp org) and may not be used without
permission of the author.
-</small>
+Title: Anti-Aliased Threshold Tutorial
+Date: 2015-08-17T16:49:18-05:00
+Modified: 2015-08-17T16:49:23-05:00
+Author: Ville Pätsi
+
+
+<small>
+Text and images Copyright (C) 2002 [Ville Pätsi](mailto:drcNOSPAM gimp org) and may not be used without
permission of the author.
+</small>
+
+## Intention
+
+The threshold plug-in works by dividing the image into two parts, dark and light, producing a 2 color image.
This is often not the desired result, for some images anti-aliasing is needed, but the threshold plug-in
cannot provide that. With a little utilization of the curves plug-in, we get nice results.
+
+## Problems with the threshold
+
+<figure>
+<img src="{filename}original.jpg" alt="Antialiased Threshold Tutorial" />
+<img src="{filename}threshold.jpg" alt="Antialiased Threshold Tutorial" />
+</figure>
+
+
+On the left you we see the original image that is about to be thresholded, and on the right side we see the
result. The default settings for the Threshold plug-in were used (<span class="filter"><Image> Layers ->
Colors -> Threshold</span>). The resulting image is very blocky and aliased.
+
+## The Curves Trick
+
+<figure>
+<img src="{filename}curves.png" alt="Antialiased Threshold Tutorial" />
+<img src="{filename}finished.jpg" alt="Antialiased Threshold Tutorial" />
+</figure>
+
+First duplicate the image layer by going to the layers dialog, making sure the image layer is selected, and
clicking the duplicate button (fourth from the left). We can use the original layer for some color tricks
later. Now the next thing is to desaturate the image (<span class="filter"><Image> Layers -> Colors ->
Desaturate</span>). This way the colors will not interfere with the fake thresholding. When the layer is
grayscale, select the curves editor (<span class="filter"><Image> Layers -> Colors -> Curves</span>). Now we
can play with the Value "channel". The image on the left displays the settings used for the example image.
The space between the two dots determines how much aa the resulting image will have. The wider the gap, the
more grayscale values it will have, and vice versa. The resulting image can be seen on the right.
+
+## A neat addition
+
+<figure>
+<img src="{filename}effect.jpg" alt="Antialiased Threshold Tutorial" />
+</figure>
+
+If you now take the original image layer, move it over the new one (make sure it has an alpha channel), and
change its mode to "Color" in the layers dialog, you get nice results displayed above.
+
+The original tutorial can be found [here](http://drc.gimp.org/).
+
+<small>
+Text and images Copyright (C) 2002 [Ville Pätsi](mailto:drcNOSPAM gimp org) and may not be used without
permission of the author.
+</small>
diff --git a/content/tutorials/Automate_Editing_in_GIMP/index.md
b/content/tutorials/Automate_Editing_in_GIMP/index.md
index 28329b2..5ac2f8b 100644
--- a/content/tutorials/Automate_Editing_in_GIMP/index.md
+++ b/content/tutorials/Automate_Editing_in_GIMP/index.md
@@ -1,686 +1,686 @@
-Title: Automate Editing
-Date: 2015-08-17T17:09:25-05:00
-Modified: 2015-08-17T17:09:31-05:00
-Author: Stephen Kiel
-
-
-[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
-<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Automate Editing</span> by <a
rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#">Stephen Kiel</a> is licensed under a
[Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US). The code sources in this tutorial are
licensed by Stephen Kiel under the conditions of the [GNU Public License GPL
V3](https://www.gnu.org/copyleft/gpl.html).
-
-## Table of Contents
-
-<style>
-.toc > ul {
- list-style-type: decimal;
-}
-.toc > ul > li {
- margin-top: 0;
-}
-.toc li ul {
- margin-bottom: 1rem;
-}
-.toc > ul > li > ul {
-list-style-type: upper-alpha;
-}
-.toc > ul > li > ul > li > ul {
-list-style-type: lower-roman;
-}
-</style>
-<!-- Yes, it's a hot mess. -->
-
-[TOC]
-
-## Motivation
-
-This tutorial will describe and provide examples for two types of automation functions. The first function
is a tool to capture and execute “Macro” commands. The second function is a set of Automation Tools to
capture and run a “Flow” or “Process”. The code for this tutorial is written using Gimp-Python and should be
platform portable – able to run on either Linux or Windows operating systems. <sup>\*</sup>
-
-The goal of these functions is to provide tools that speed up the editing process, make the editing process
more repeatable, and reduce the amount of button pushing the user has to do. Taking over the button pushing
and book-keeping chores allows the user to focus on the more creative part of the editing process.
-
-These automation tools are examples so please modify them to suit your needs. The goal of the tutorial is to
provide and explain a working example. If the coding style seems a bit rough, I apologize, I am not a
programmer.
-
-The main body of this tutorial will be discussing the ideas behind automating the editing process. Hopefully
we can keep the focus on the concept without getting lost in the details of the included example. The details
of how to setup and run the example code and what the automation example is supposed to accomplish will be
covered in appendices to the tutorial. We are not going to cover python programing as it is already well
documented.
-
-This tutorial will use some of the concepts covered in an earlier tutorial “[Automated Jpg to
Xcf](../AutomatedJpgToXcf/)”. It would probably be helpful to read through the earlier tutorial for
introductory example.
-
-<sup>\*</sup> Hopefully it is easy to adapt it to Apple OS as well.
-
-## An introduction to Macros
-
-Before we dive into a description of the code, let's take a brief walk through the process of capturing and
running a “Macro”.
-
-Suppose we wanted to set up the grid spacing so that it is centered on the image, is a square grid, is
scaled so there are 24 grid blocks in the 'long' dimension, and is an on-off dash pattern. We could enter the
following code fragment in the Gimp “Python Console” (under the “Filters” pull down menu) to set the grid up.
-
-*Example - GIMP-Python Code Fragment*
-
- :::python
- >>> theImage = gimp.image_list()[0]
- >>> centerX = theImage.width/2
- >>> centerY = theImage.height/2
- >>> gridSpacing = max(theImage.width, theImage.height)/24
- >>> pdb.gimp_image_grid_set_offset(theImage, centerX, centerY)
- >>> pdb.gimp_image_grid_set_spacing(theImage, gridSpacing, gridSpacing)
- >>> pdb.gimp_image_grid_set_style(theImage, GRID_ON_OFF_DASH)
-
-
-<figure>
-<img src="{filename}CommandsPythonConsole.jpg" alt="CommandsPythonConsole.jpg" />
-<figcaption>
-Commands in the Python Console
-</figcaption>
-</figure>
-
-If you watch the image as you enter the commands and have the Grid turned “ON” you will see the grid spacing
on the active image change as we execute these commands.
-
-The tool we are writing in this tutorial will allow us to copy this code fragment into a text file, add a
name and optional comments, and access it through a menu widget so we can rerun this code fragment on other
images. The tool will access the “macro” code fragment using the name we assigned through a pull down menu.
-
-The ability to save the macro code fragments allows us to build up a library of editing shortcuts that will
not only save time, but do the job better than you could be simply pushing the buttons. In this case we made
the grid spacing based on a percentage of the image size rather than a fixed size in either inches, pixels,
or cm.
-
-## Macro Implementation – in Broad Strokes
-
-Let's touch upon the main ideas that we are going to use to implement the macro recording and execution
scheme that we can use to capture and run a set of commands.
-
-1. The command set will be read and parsed into a data structure. Each command set block will have a name
and consist of commands and comments.
-2. The data structure will be read for a list of macro names. This list will be used to populate a GUI
widget so we can select a macro by name.
-3. From the named Macro, the data structure will return a list of commands.
-4. The list of commands will be run in an 'exec' loop:
-
-Example "Exec" Loop:
-
- for Cmd in commandList:
- exec(Cmd)
-
-
-
-<figure>
-<img src="{filename}CommanderMacroSubMenu.jpg" alt="CommanderMacroSubMenu.jpg" />
-<figcaption>
-Commander Macro Sub-Menu
-</figcaption>
-</figure>
-
-### Architecture
-
-When you want to write a script to provide a single function, the common and obvious approach is to write a
single in-line program, register the program, and provide a user interface if it is called for. Our
Automation Example is multi-functional – more like a system, and we want to leave some of the functionality
somewhat fluid. If we consider the system (data and code) and make good architectural choices we can
accomplish our goal without making the code overly complex.
-
-### Execution Model
-
-We will be breaking the execution of our automation functions into three different categories:
-
-1. User Interface Functions
-2. Base Class and Functions
-3. Pseudo Code
-
-Let's examine these categories briefly:
-
-The <u>**User Interface Functions**</u> are the top level function that are activated from the menus. They
are the 'main' function, the Registration Block, and the function that is registered in the Registration
Block. We will be deliberately keeping the User Interface Function code sparse. While the UI Functions afford
lot of functionality, they are rather fragile and difficult to debug. The approach we will use is to get the
UI running and call a function that can be written and debugged independently minimizing the edits to the
User Interface.
-
-The <u>**Base Class and Functions**</u> are just normal python classes and functions that can be run from a
shell. These functions do not depend upon the gimpfu library could be run in any python shell (including the
Gimp-Python Shell).
-
-* If you make a syntax error in the course of an edit, you want to be able to quickly isolate it to a
particular line in a particular function. This is easier to do from the shell than when running the program
from a GUI.
-* Keeping the generic python code separate from the code that depends upon the gimpfu library minimizes
the impact that future releases of gimp will have on the scripts. Because the gimp procedure calls are
handled by Pseudo Code rather than the Base Class and Functions we have less risk of compatibility from
future releases of Gimp within the Base Class and Function.
-
-The **<u>Pseudo Code</u>** is the portion of the overall system functionality that we want to deliberately
leave fluid. The functionality of the Pseudo Code is intended to be simple editing steps (which should cover
a pretty wide range of edits).
-
-* The types of things that you might do in Pseudo Code could include: copy layers, name layers, run
filters, set layer modes, set layer opacity, merge layers, and run PDB functions. The pseudo code can access
basic image characteristics and perform operations with them.
-* Pseudo Code is simple Gimp-Python code fragments. Because there is no support for indenting, a simple
test for how complex your Pseudo Code can become is whether you need to indent or not (note that you can
write a simple 'if' statement on one line). In spite of this restriction we will show with some examples that
you can accomplish quite a bit of editing with macros.
-
-A final thing that we need to talk about that is not a 'category' of execution but is something that is an
important part of our Execution Model is **<u>Scope</u>**. We are only going to touch on a couple of points
that affect when lists are defined for dynamic User Interface selection.
-
-* The Gimp User interface widgets allow you to select items from a list.
-* You can specify the list within the widget, or pass the widget a list by name **<u>IF</u>** you define
the list outside of the function being called. The list must be defined at the level of the function main().
-* By keeping the scope of the User Interface lists at the top level, we are able to use the list name in
**<u>both the user interface and in the function being called</u>**. In this way we can use the actual
argument being selected rather than its index position in a list.
-* An architectural advantage is we create this list with a function that reads a configuration file. We
only have to define and maintain this configuration list in one place within our system and use the resulting
list in as many places as we want by calling a reading function. This is how we will get new macros to show
up in the menus when we add them.
-* The following skeletal code fragments illustrate defining a list 'cmdList' at the top level – 'main',
and using it within the registration block and function. Because it is defined at the ‘main’ level, we can
reference it within the function and registration block. We can recover the argument from the index (passed
by the widget) because we are using the same list in both places:
-
-<span style="font-style: italic">Example - Lists and Scope in Functions</span>
-
- cmdList = cmdrReadObj.CommanderMacros()
- #
- def autoCommander(theImage, cmdListIndex):
- ...
- commanderName = cmdList[cmdListIndex]
- ...
- #
- register (
- "autoCommander", # Name registered in Procedure Browser
- ...
- [
- ...
- ( PF_OPTION, "cmdSet", "Select a command", 0, cmdList ),
- ],
- main()
-
-
-### Data Model
-
-We now need to talk about the form and organization of the data that we intend to use. The way that we
choose to organize our data can have a dramatic impact on the complexity of the functions that we need to
write. In our case we can take advantage of a couple of somewhat more sophisticated data models to make the
actual functions fairly straightforward. We will be using “trees” (Python ElementTree) and XML data.
-
-### Trees and XML Data
-
-Python has several built in data structures such as dictionaries, lists to name a couple. A very powerful
library structure that is well suited to our particular needs is a “tree”. A couple of the key features that
make them well suited for our application are:
-
-1. Trees have a natural 'hierarchical' feel to them, kind of like a directory structure or the 'folders' of
an operating system. The levels of hierarchy can be thought of as ‘containing’ the contents in the lower
level.
-2. A branch can hold an indefinite number of elements, and those elements can be either a leaf with
attributes or a sub-branch to another level. This lends a lot of flexibility with the way we structure of the
data.
-3. The input / output format is XML, which is not only hierarchical, but it is text so it is human readable
and portable to any platform (computer / OS).
-
-<figure>
-<img src="{filename}XmlHierarchyContainers.jpg" alt="XmlHierarchyContainers.jpg" />
-<figcaption>
-XML Hierarchy - Containers
-</figcaption>
-</figure>
-
-The examples use ElementTree to read and write the data between trees and XML. ElementTree is included with
Python and described in the Python documentation, so we will not go into detail about the mechanics of tree
structures here.
-
-You might be wondering at this point where these XML file will be located. The functions that read and write
the XML files are expecting to find the XML under a directory named ‘myXml’ which you will have to create
under you user gimp directory. If you are using Linux and your home directory is ‘stephen’ the path would
look something like:
-
- /home/stephen/.gimp-2.8/myXml
-
-If you are using Windows the path would look something like:
-
- C:\Users\stephen\.gimp-2.8\myXml
-
-We will be dealing with a couple of types of pseudo code and xml files, and those will be keep in separate
directories under myXml, but we will get to that in a bit.
-
-## Macro Implementation – Revisited
-
-Now that we have talked about the execution model and data model, we can revisit the “Implementation – In
Broad Strokes” and tie the steps to the code that is handling them.
-
-### Pseudo Code to XML
-
-Our first item was to **<u>read the pseudo code and parse it into a data structure</u>**. That data
structure is going to be a Tree.
-
-We can begin writing a pseudo code file by copying and pasting a set of commands from the gimp python
console into a text file whose name ends in “.def”. The “>>>” preceding each command will be the “keyword” to
indicate a command.
-
-The pseudo code will be in a file, in this example it is named NormalGridCanvas.def. Each line begins with a
keyword. Keyword choices are: “commander>”, “macro>”, “comment>”, or “>>>”.
-
-The class XmlGenerator() in autoBase.py contains a function GenCommanderXml() which reads all of the \*.def
files in ~/.gimp-2.8/myXml/commander, inserts the lines into a tree (after removing the keyword), and then
writes the tree out to a file named combinedCommander.xml.
-
-The keyword will determine both the “tag” associated with the line of pseudo code, and whether it is a
“branch” element (macro name) or a “leaf” element (command or comment). We are assigning both a definition
and a level in the hierarchy for each line of pseudo code text as we read it into the tree.
-
-*Example - Pseudo Code Example - NormalGridCanvas.def*
-
- commander>Normal Grid and Canvas
- macro>
- comment>Shrink the Canvas back to fit the layer
- >>>theImage.resize_to_layers()
- comment>Set grid to origin and size = image
- >>>pdb.gimp_image_grid_set_offset(theImage, 0, 0)
- >>>pdb.gimp_image_grid_set_spacing(theImage, theImage.width, theImage.height)
-
-
-After all of the \*.def files are read into the tree and written back out in the form of an XML file, the
formatting is done. Writing out a tree automatically generates all of the containing enclosures, essentially
making properly formatting the XML a trivial task. The fragment from combinedCommander.xml illustrates the
XML from the pseudo code in NormalGridCanvas.def.
-
-<span style="font-style: italic">Example - combinedCommander.xml (fragment)</span>
-
- <combined>
- Definition
- ...
- <commander>
- Normal Grid and Canvas
- <comment>
- Shrink the Canvas back to fit the layer
- </comment>
- <command>
- theImage.resize_to_layers()
- </command>
- <comment>
- Set grid to origin and size = image
- </comment>
- <command>
- pdb.gimp_image_grid_set_offset(theImage, 0, 0)
- </command>
- <command>
- pdb.gimp_image_grid_set_spacing(theImage, theImage.width, theImage.height)
- </command>
- </commander>
- ...
- </combined>
-
-_\* The XML above was run through an online XML pretty printer for readability. The XML from ElementTree is
functional, but hard to read._
-
-<figure markdown="span">
-<img src="{filename}PseudoCodetoXmlFunction.jpg" alt="PseudoCodetoXmlFunction.jpg" />
-<figcaption>
-Creating XML from \*.def files
-</figcaption>
-</figure>
-
-The Xml generator can be called from a GUI menu.
-
-<figure>
-<img src="{filename}PseudoCodeImported.jpg" alt="PseudoCodeImported.jpg" />
-<figcaption>
-Xml files built
-</figcaption>
-</figure>
-
-### Displaying the Macro Names in a Menu
-
-In our discussion of Scope in the Section “Execution Model”, we showed an example code fragment where we
created a list “cmdList”. The code was from the example autoCommander.py and uses a class BaseXmlReader and
the function CommanderMacros() which resides in autoBase.py.
-
-* The list of Macro Command Names is created by loading the XML file combinedCommander.xml into an
ElementTree.
-* The tree is traversed at the branch level (the tag <commander>), and the branches text which are the
names of the macros are built into a list. The list is essentially built with a “for loop”.
-* The list is passed to the widget and used to select the macro you want to use.
-
-### Running a Specific Macro
-
-The final point to expand upon is how we fetch and run the specific set of commands for a selected Macro.
-
-* We can derive the name of the Macro by way of the menu selection (registration block of
autoCommander.py).
-* We will again use the BaseXmlReader class, but this time we will utilize the CommanderExtract function
passing the Macro name as an argument. The CommanderExtract function traverses the tree branch by branch as
before when we were gathering the names of the Macros, except it is comparing the names against the passed
argument as we go. When the CommanderExtract function finds a branch matching the argument, it drops down a
level to read the leaf elements under that branch.
-* The leaf arguments whose tags are set to “command” are appended to the list that will be returned for
processing. The leafs whose tags are “comment” will be ignored.
-* The newly created returned list will be run through in a “for loop” which will process each line as a
separate command using the python “exec” function.
-
-The variable 'theImage' is defined with the autoCommander function and can be used as a handle to access
information about the active image by the Macro commands.
-
-### Commander Macros – Summary
-
-The discussion above has described how we can generate a macro by running a set of commands in the Python
Console, paste those commands into a text file adding a name and comments, and then making it available for
use.
-
-The code for transforming the pseudo code into a macro is in autoWriteXml.py. The code to display the menu
of Macros you have written and execute them is in autoCommander.py. The Classes referenced by these two
scripts are in autoBase.py.
-
-The text files that you write for your macro definition need to be put in a directory
~/.gimp-2.x/myXml/commander and have an extension of '.def'. Create a separate \*.def file for each macro.
-
-## An Introduction to Automated Editing
-
-Macros are a terrific way to make the editing process faster and more repeatable, they do though have some
limitations.
-
-1. There are times when the order of the editing steps are important.
-2. They have to be applied one at a time.
-3. You have to keep track of what has already been done and what yet still remains.
-
-A Workflow, or a Process, or a Recipe, what ever you may be used to calling it (I prefer Workflow) can be
viewed as a set of ordered steps. These steps would usually correspond to the actions that you would
typically code up in a set of Macros. We will automate a Workflow that runs the right steps at the right time
and records the editing progress on each of the images.
-
-Let's quickly go over how how capturing and running a “Workflow” is going to work before we dive in. We
capture the code fragments that describe the editing process in the same way that we did for the macros. We
can either copy and paste from the python console to generate a series of commands, or we could copy them
from a working macro.
-
-The steps in a workflow aren't in fact very different than the Commander Macros that we described in the
earlier part of this tutorial, the only real difference is they are an ordered set to be followed.
-
-The way that we are going to use the automation tools is a bit different than using macros. When we want to
use a macro we are running it on the image that is open in editor window. The automation tools on the other
hand run on a directory of images, so we run it without an image being open in the editor window.
-
-We mark the images that are ready to move to the next step of the workflow and then run the automation
tools. The automated update looks at each image in the work directory, if it is marked for update, it gets
updated to the next step, if it is not marked for update it is left alone.
-
-The automated update will move the marked images to the next step of their assigned workflow essentially
keeping track of the 'book-keeping' for us. A time management benefit is if there are several images
requiring a filter that takes a bit of time to run, you can go do something else while they are running.
-
-## Automation Tool Implementation – In Broad Strokes
-
-Let’s touch upon the main ideas that we are going to use to implement the automated workflow recording and
execution tasks that we are talking about above.
-
-1. The pseudo code will be read and parsed into a data structure. Each pseudo code block (or step) will
have a name and consist of commands and comments. Each workflow will have a name and will contain an ordered
set of steps or pseudo code blocks.
-2. The automation flow will generate a list of images in a given directory. It will then step through that
list checking whether an image is marked for update or not.
-3. If an image is marked for update, the automation flow will determine the name of the workflow and the
name next step to perform on the image. The name of the 'workflow' and the 'next step' will be used to select
a list of commands.
-4. The list of commands will be run in an 'exec' loop:
-5. The 'current step' and 'next step' for the image will be incremented and then saved with the image.
-
-### Architecture
-
-We commented in the section on macros that good architectural choices can accomplish our goal without making
the code overly complex. This argument is as compelling for automated updating of our images. The
Architecture and Code for our automated updating tools will be very similar to the ones used for capturing
and running the “Commander” macros.
-
-### Execution Model
-
-As in our discussion of the Macros, we will be breaking the execution of our Automation Functions into three
different categories:
-
-1. User Interface Functions
-2. Base Class and Functions
-3. Pseudo Code
-
-We won't rehash these topics but instead comment on the difference, which is the structure of the pseudo
code. The organization of workflows as a set of steps where each step is a set of commands prompts us to
organize the pseudo code in a similar manner, where we think of steps containing a sequence of commands, and
workflows containing a sequence of steps. In order to reflect this additional level of hierarchy or
containment, we will use an additional keyword in the workflow pseudo code.
-
-### Data Model
-
-There are two special types of data for the automated flow:
-
-1. Trees and XML data are similar to the “Commander Macros”.
-2. Parasite (or Property) data to keep track of the particular workflow that is being used to edit an
image, the next step that is to be used, and whether an image is ready to be incremented to the next step.
-
-### The Image and Parasites (or Property) Data
-
-The Image type that we will be using for all of our work is the native Gimp \*.xcf format. This image format
saves all of the layers and modes that we might set while editing and also saves a type of data called
Parasites, which are similar to Properties on many other systems.
-
-Parasites are like variable can be referenced by name in order to access their value. Like variables they
can be assigned and read. Unlike variables, parasites are persistent, very persistent. A parasite, when
assigned to an image, becomes part of the image and is saved with the image file. A parasite that is assigned
and saved with an image can be read after gimp is closed and reopened, it is just like any other file data in
that respect.
-
-Parasites are also very portable, you can read and write parasites using either the scheme based or python
based scripts. They are also independent of the operating system, so you can write a parasite to an image on
your Linux Desktop machine, and read it a week later on your windows based laptop assuming that you saved the
images in the native gimp \*.xcf file format. Parasites can also be written to specific layers, but for our
present needs, the image parasites are all we are using.
-
-Because the parasite is associated with the image, and it is persistent until it is overwritten or removed,
it is an ideal tool for keeping track of the state of the image's progress in the editing process. Beyond
being able to just take notes, the values of the parasites can be used like a property to make decisions and
influence the execution of the script that has read the parasite data.
-
-If for example we opened an image that had two parasites (properties), named 'UpdateFlag' and 'Flow', we
could use the values from those parasites to make decisions:
-
-_Example – Decisions based on Parasite / Property Values_
-
- UpdateFlag = str(theImage.parasite_find('UpdateFlag'))
- Flow = str(theImage.parasite_find('Flow'))
- if (UpdateFlag == 'YES'):
- if (Flow == 'Standard'):
- { run commands for Standard flow }
- elif (Flow == 'SemiAuto'):
- { run commands for SemiAuto Flow }
- elif (UpdateFlag == 'NO'):
- { do nothing }
-
-
-Reading and writing parasites to an image does have one idiosyncrasy worth comment on which is the format of
the data being written. You must express the parasite as an ordered set of 'Name', 'Index', and 'Value'. Name
and Value are both strings, and the Index is a small integer, (stay between 1 and 254). If you have not used
parasites before you might be wondering how you determine a 'correct' value for the index. You may:
-
-1. Throw a dart at a dartboard and use the result (assuming you hit the board).
-2. Or, feel free to use my personal favorite '5'.
-
-As long as you pick a number and preferably stick with it, everything will be fine. When you read the
parasite value, the functions in the Scheme scripting interface will give you the 'Name', 'Index', and
'Value'; the functions in the Python scripting interface will only return the 'Name' and 'Value'.
-
-Writing the parasite is called 'attaching' and reading the value back is called either 'get' or 'find'
depending on the method you choose to use. You can read and write parasites from within scripts or from
either of the python or scheme consoles.
-
-### Running the Automation Tools on a Workflow
-
-Our final topic about an Automated Workflow in our “Broad Strokes” is how to setup and run the Workflow on a
set of images. We are running on a set of images rather than just one so we open up gimp without an image in
the editor window. The tools will open up, work on, save, and close the images one by one.
-
-In an earlier tutorial “[Automated Jpg to Xcf](../AutomatedJpgToXcf/)” we outlined how to import a directory
containing jpeg images into a directory with gimp xcf images. The automation tool implementation modifies the
import function to add the assignments of parasites to the images. The images are assigned to a particular
flow as they are imported, and the initial set of flow control properties are written and saved as part of
the import process. The jpeg-to-xcf function also runs the Automation Process (Auto Update Image) one time to
put all of the images on the first step of the assigned flow, so they are ready for their first manual
adjustment right after they are imported.
-
-After opening and (optionally) adjusting an image you mark the image as ready for the next step by setting
the “UpdateFlag” parasite to a value of “YES”. This is accomplished with a function that is available from
the menu: “Automation → A2 Mark for AutoUpdate (File)”. (Note: Since you will be doing this a lot, it is very
convenient to use a keyboard shortcut to run this function).
-
-Images are moved to the next step in their flow by running the “Auto Update Images (Directory)” function
from the menu. This will increment all of the images whose UpdateFlags are set to YES to the next step in
their flow. Note that since each image has a record of its own next step and flow, there is no requirement
for the images in a directory to be on the same step or even using the same workflow.
-
-The mechanics for creating XML from pseudo code for the workflows, properties, and commander macros is to
run the function Pseudocode to XML from the menu (Automation → Utilities → Pseudocode to XML).
-
-The export XCF to JPG function in the “Automation” menu opens each xcf file in the source / work directory
and looks at the properties of the image. If the image is “Finished”, at the end of the flow, it is exported.
The images that are still being work on are left alone.
-
-<figure>
-<img src="{filename}RunningAutoUpdate.jpg" alt="RunningAutoUpdate.jpg" />
-<figcaption>
-Running AutoUpdate
-</figcaption>
-</figure>
-
-## Automation Tool Implementation – Details
-
-### Pseudo Code
-
-#### Workflow Pseudo Code
-
-You can generate the list of commands that we wish to perform on an image in the python console and when you
have it working just right for the step you would like to perform you can copy and paste them into a pseudo
code text file. The “Pseudocode to XML” function will be looking for files that have the file extension
“.def” so it will convert all of the \*.def files in the flow directory into XML.
-
-As in the case of the macros, you can put in comment lines beginning with “comment>” and blank lines to make
the code fragments more readable and easier to understand when you come back to make enhancements in a couple
of months.
-
-Each set of commands is contained by a “Step” which uses the key “step>”. The top level container is the
Workflow which uses the key “flow>”. Each workflow can be specified in its own “.def” file. The “Pseudocode
to XML” function will read all of the \*.def files and create a single XML file named combinedFlow.xml in the
myXml/flow directory.
-
-#### Property / Parasite Pseudo Code
-
-The other type of pseudo code that we need to talk about is the code for properties. The pseudo code for
properties is contained in the “myXml/property” directory. The file flagProperties.xml is created by the
“Pseudocode to XML” function from the flagProperties.def file. In the case of properties it only really makes
sense to have one set of properties for all flows. The properties defined in the flagProperties.xml file will
be the “flag” properties. You can set the property name, comments, the option values, and the default value
(initial setting). The “property>” key sets the property name and contains the other property values within
the XML. The other keys are “comment>”, “default>”, and “options>”. The key “flags>” with the name Control
Properties is used at the beginning of the file to define the top level container.
-
-There are three properties that are assigned by the automation scripts and are not normally edited by the
user or defined in the “.def” file. They are created, read and modified by the scripts. These are the flow
control properties, “Flow”, “CurrentStep”, “NextStep”.
-
-You can see all of the properties and current assigned values for a particular image using the menu function
“Automation” -> “A1) Display Assigned Parasites (File)”.
-
-<figure>
-<img src="{filename}ParasitesImage.jpg" alt="ParasitesImage.jpg" />
-<figcaption>
-Assigned Parasites
-</figcaption>
-</figure>
-
-### Properties and Image State – Flow Control Parasites
-
-One way to think of a workflow is as a series of states. These states are what we have been referring to as
steps. As the image evolves it transitions from one state to another it moves through the workflow from
beginning to end, state by state (or step by step).
-
-The Flow Control Parasites provide a method to make each image “self aware” of its own state, which is its
assigned “Flow” and “CurrentStep”. It is also aware of the next step to which it will proceed, which is
determined by its assigned “Flow” and “NextStep”. The order for the steps is determined by the order they are
listed in the pseudo code. When an image is updated the “NextStep becomes the new “CurrentStep” and a new
“NextStep” is looked up and written to the image as a parasite.
-
-Let's examine the steps of the “Standard” flow example that is included with this tutorial. The steps the
image will go through are:
-
-<span style="font-style: italic">Example – States or Steps in the Standard Flow Example</span>
-
-<style>
-table {
-max-width: 40rem;
-font-size: 0.85rem;
-margin: 1rem auto;
-}
-table td {
- padding: 0.25rem;
- border: solid 1px #eee;
-}
-
-</style>
-
-<table>
-<tbody>
-<tr>
-<th></th>
-<td class="emphesize">CurrentStep</td>
-<td class="emphesize">NextStep</td>
-</tr>
-<tr>
-<th>1.</th>
-<td>First</td>
-<td>Alignment</td>
-</tr>
-<tr>
-<th>2.</th>
-<td>Alignment</td>
-<td>DynamicRange</td>
-</tr>
-<tr>
-<th>3.</th>
-<td>DynamicRange</td>
-<td>Retinex-Filter</td>
-</tr>
-<tr>
-<th>4.</th>
-<td>Retinex-Filter</td>
-<td>Sharpen</td>
-</tr>
-<tr>
-<th>5.</th>
-<td>Sharpen</td>
-<td>ColorAdjust</td>
-</tr>
-<tr>
-<th>6.</th>
-<td>ColorAdjust</td>
-<td>FINISHED</td>
-</tr>
-<tr>
-<th>7.</th>
-<td>FINISHED</td>
-<td>FINISHED</td>
-</tr>
-</tbody>
-</table>
-
-
-The state “First” is assigned by the Jpeg to Xcf function. This step is assigned automatically regardless of
the flow. The steps following the “First” step, “Alignment”, “DynamicRange”, “Retinex-Filter”, “Sharpen”, and
“ColorAdjust” are assigned through the Xml representation of the flow. The Step “FINISHED” is assigned
automatically when the end of the list of steps is reached.
-
-When the images are first imported, the autoUpdate function is run to move the images from the automatically
assigned “First” step to executing the first real step of the flow. When the CurrentStep becomes “FINISHED”,
the image is ready to be exported by the Xcf to Jpeg function.
-
-### Status Flag Parasites
-
-The Flag Parasites are for decision making. They will be assigned with a default value when the image is
imported into a flow. The parasite whose function is flow control is the “UpdateFlag”. The value of the
UpdateFlag is read to determine if an image is ready to be moved to the next state.
-
-Flag Parasites other than the UpdateFlag can be modified or eliminated to suit the needs of your pseudo code
functions. You could for example add Flags with values that determine certain layer Opacity, or determine
whether certain filters will be run. There are a lot of possibilities for this powerful capability.
-
-### Automation Workflow - Summary
-
-Running an Automated Workflow is almost trivially easy, once you have it set up to your liking. There is
some work to be sure in setting up a workflow, but the reward is a consistent and apparent (obvious which
steps have been run) workflow or process.
-
-There are several things you may need to set up Gimp Preferences in order to optimize the operation.
-
-## Conclusion
-
-The combination of an available programming language, well suited data structures, the ability to affix
properties to images, and a rich set of editing features offer powerful possibilities for automating the
editing process.
-
-Using an automated workflow has changed the way that I use Gimp for editing my photos. I hope that you can
leverage these examples to make working with Gimp more productive for yourself. Links to the example scripts
and pseudo code are in the following appendices.
-
-## Appendix – Notes
-
-The following Appendices contain notes which are more specific to setting up the example scripts, the
example \*.def files, and comments on debugging.
-
-### Setting up the Example Scripts
-
-All of the example scripts begin with “auto”, e.g. autoAutoUpdate.py, autoBase.py, ... If you try them but
then decide you don't like them they should be pretty easy to find and remove. The following example scripts
should be loaded into your gimp/plug-ins directory. Something like /home/stephen/.gimp-2.8/plug-ins if your
user name is stephen and you were using gimp 2.8\. Click on the filename to download.
-
-1. [autoAutoUpdate.py](plug-ins/autoAutoUpdate.py)
- Runs the auto update function on a directory of images.
-2. [autoBase.py](plug-ins/autoBase.py)
- Contains the classes that read and write the XML files that affect how the update works.
-3. [autoCommander.py](plug-ins/autoCommander.py)
- Runs the 'Commander' macros.
-4. [autoJpegToXcf.py](plug-ins/autoJpegToXcf.py)
- Imports the images into xcf format and assigns properties to image.
-5. [autoRWparasites.py](plug-ins/autoRWparasites.py)
- User Interface functions to read and write image parasites from the menu.
-6. [autoWriteXml.py](plug-ins/autoWriteXml.py)
- Reads \*.def files and generates XML for commander macros, workflows, and properties.
-7. [autoXcfToJpg.py](plug-ins/autoXcfToJpg.py)
- Exports the finished images back to jpeg format.
-
-### Setting up the Example Pseudo Code
-
-Underneath your gimp directory (something like /home/stephen/.gimp-2.8) you need to create a directory named
'myXml'. Don't get creative here, the scripts are looking for this specific directory. It will be in the same
directory that contains your plug-ins directory. Underneath the myXml directory create three more
directories, 'commander', 'flow', 'property'. These will be where your pseudo code and three kinds of XML
will be located.
-
-#### Pseudo Code for Commander Macros
-
-Copy the following example \*.def files into the “commander” directory
(/home/stephen/.gimp-2.8/myXml/commander – assuming a home directory of /user/stephen and a gimp version
2.8). They are example Commander Macros pseudo code files. Click on the filename to download.
-
-1. [centeredgrid.def](myXml/commander/centeredgrid.def)
-2. [colorAdjust.def](myXml/commander/colorAdjust.def)
-3. [createColorLayer.def](myXml/commander/createColorLayer.def)
-4. [createDynamicRangeLayer.def](myXml/commander/createDynamicRangeLayer.def)
-5. [expandCanvas.def](myXml/commander/expandCanvas.def)
-6. [normalGridCanvas.def](myXml/commander/normalGridCanvas.def)
-7. [renameBaseLayer.def](myXml/commander/renameBaseLayer.def)
-8. [retinexLayer.def](myXml/commander/retinexLayer.def)
-9. [sharpenLayer.def](myXml/commander/sharpenLayer.def)
-
-Hopefully with the comments and by running them, their function will be apparent. They should be enough to
get you started writing some macros of your own.
-
-When you run the “Pseudocode to XML” Utility function, it will read all of the \*.def files in this
directory and write an XML file in this directory called “combinedCommander.xml”. “combinedCommander.xml” is
the file that is accessed to list and run all of your macros.
-
-#### Pseudo Code for Automation Workflows
-
-Copy the following \*.def files into the “flow” directory (/home/stephen/.gimp-2.8/myXml/flow). They are
example Workflow pseudo code files.
-
-1. [fullauto.def](myXml/flow/fullauto.def)
-2. [semiauto.def](myXml/flow/semiauto.def)
-3. [standard.def](myXml/flow/standard.def)
-
-These three workflows all follow the same basicsteps of the standard workflow. The semiauto and fullauto
workflows combine some of the steps. The idea is to give you a couple of different workflows to play with.
The fullauto illustrates that you really can pack a lot of editing into a “step” but is probably too
automatic to be of practical use.
-
-When you run the “Pseudocode to XML” Utility function, it will read all of the \*.def files in this
directory and write an XML file in this directory called “combinedFlow.xml”.
-
-#### Pseudo Code for Properties
-
-Copy the following \*.def file into the “property” directory (/home/stephen/.gimp-2.8/myXml/property). It is
an example Property pseudo code file (for Flag Properties / Parasites).
-
-1. [flagProperties.def](myXml/property/flagProperties.def)
-
-When you run the “Pseudocode to XML” Utility function, it will read \*.def file in this directory and write
an XML file in this directory called “flagProperties.xml”.
-
-### Pseudo Code Syntax
-
-#### Commander Pseudo Code
-
-There are three keywords used for writing commander pseudo code:
-
-1. `commander>` - The text following this keyword is the Macro Name. This keyword must be the first keyword
in the file. This is the “container” or the root of the tree for the following comments and commands.
-2. `comment>` - The text following this keyword is for descriptive comments. The comments will be
represented in the pseudo code \*.def file and in the resulting XML. When the XML is read for processing,
comments will be ignored.
-3. `>>>` - The text following this keyword is taken as a python statement. Then the resulting XML is read,
the command statements will be passed to the commander script to be processed in order.
-
-Note that lines beginning with “#” are ignored. You may indent if you like for readability. Leading white
space is stripped off.
-
-_Example - Commander Pseudo Code Example_
-
- commander>Centered Grid
- comment>** Set up the grid for Rotate and or Perspective Transform
- comment>* Set values from python-fu image object
- >>>centerX = theImage.width/2
- >>>centerY = theImage.height/2
- >>>gridSpacing = max(theImage.width, theImage.height)/24
- comment>* configure grid with PDB functions
- >>>pdb.gimp_image_grid_set_offset(theImage, centerX, centerY)
- >>>pdb.gimp_image_grid_set_spacing(theImage, gridSpacing, gridSpacing)
- >>>pdb.gimp_image_grid_set_style(theImage, GRID_ON_OFF_DASH)
-
-
-#### Property Pseudo Code
-
-There are five keywords used for writing property pseudo code:
-
-1. **flags** - The text following this keyword is the top level container, or in other words, the root of
the tree.
-2. **property** - The text following the keyword is the name of the property / parasite. This is a second
level container or a branch of the tree. It will contain all of the following leaf keywords (comment,
default, and option) until the next property statement.
-3. **comment** - The text following this keyword is for descriptive comments. The comments will be
represented in the pseudo code \*.def file and in the resulting XML. When the XML is read for processing,
comments will be ignored. The comments are leafs of the tree.
-4. **default** - The text following this keyword is the default property value. The default value is a leaf
of the tree.
-5. **option** - The text following this keyword is one of the possible property values. There can be
several option values for any given property. The option values are leafs of the tree.
-
-_Example - Property Pseudo Code Example_
-
- flags>Control Properties
- property>UpdateFlag
- comment>Initial value set on import to Xcf
- comment>Set by user on Image from Automation Menu
- comment>Read by autoAutoUpdate (updateImage function)
- comment>Updates Image (executes Next Step in Flow) if YES
- comment>Reset to NO by updateImage
- default>YES
- option>NO
- option>YES
-
- property>EnhanceColorLevel
- default>NORMAL
- option>EXTRA
- option>NORMAL
- option>MID
- option>NONE
-
-
-#### Flow Pseudo Code
-
-There are four keywords used for writing flow pseudo code:
-
-1. `flow` The text following this keyword is the top level container, or in other words, the root of the
tree. This is the name of the flow.
-2. `step` The text following this keyword is the first level branch from the root. The step contains
comments and commands. The steps select groups of commands for execution.
-3. `comment` Comments are leafs of the tree.
-4. `>>>` Commands are leafs of the tree. When the Xml is read the commands will be processed in the order
in which they appear in the step.
-
-Lines beginning with a “#” are ignored. Leading white space before the keywords is stripped out. White space
after the keyword is stripped out.
-
-### Running code in the Gimp Python Console
-
-The Python-Fu console is a python shell in which you can run not only the gimp pdb functions, but your own
python functions as well.
-
-First, set up and verify Python Path to include your user plug-ins directory:
-
-_Example – Setting the Python path in the Python-Fu Console_
-
- >>> import sys
- >>> sys.path.append('/home/stephen/.gimp-2.8/plug-ins/')
- >>> sys.path
-
-_echos back a list of paths that include path added above_
-
-Next, run your python functions in the Gimp Python-Console . This example uses the 'TestBench' class to run
functions in the other classes in the autoBase.py module. Object instances of the TestBench class echo back
results to the screen.
-
-1. Set the working directory to the user plug-ins directory
-2. Import the autoBase module functions
-3. Create and instance of the TestBench class
-4. Run the TestXmlGen and TestXmlRead functions
-
-_Example – Running your own Functions in the Python-Fu Console_
-
- >>> import os
- >>> os.chdir('/home/stephen/.gimp-2.8/plug-ins')
- >>> from autoBase import *
- >>> testola = TestBench()
- >>> testola.TestXmlGen()
- >>> testola.TestXmlRead()
-
-
-The screen shot below illustrates the process on the Windows version of Gimp / Python Console (TestXmlGen is
pictured, TestXmlRead produces several pages of output):
-
-<figure>
-<img src="{filename}Appendix-testing-in-python-console.JPG" alt="Appendix-testing-in-python-console.JPG" />
-<figcaption>
-Image - Running your code in the Gimp Python Console
-</figcaption>
-</figure>
-
-## Further Reading
-
-* [Automated JPG to XCF](../AutomatedJpgToXcf)
-
-<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license"><img alt="Creative Commons
License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" style="border-width:0"></a><br><span
xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Automate Editing</span> by <a rel="cc:attributionURL"
xmlns:cc="http://creativecommons.org/ns#">Stephen Kiel</a> is licensed under a <a
href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license">Creative Commons
Attribution-ShareAlike 3.0 Unported License</a>. The code sources in this tutorial are licensed by Stephen
Kiel under the conditions of the <a href="https://www.gnu.org/copyleft/gpl.html">GNU Public License GPL
V3</a>.
+Title: Automate Editing
+Date: 2015-08-17T17:09:25-05:00
+Modified: 2015-08-17T17:09:31-05:00
+Author: Stephen Kiel
+
+
+[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
+<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Automate Editing</span> by <a
rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#">Stephen Kiel</a> is licensed under a
[Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US). The code sources in this tutorial are
licensed by Stephen Kiel under the conditions of the [GNU Public License GPL
V3](https://www.gnu.org/copyleft/gpl.html).
+
+## Table of Contents
+
+<style>
+.toc > ul {
+ list-style-type: decimal;
+}
+.toc > ul > li {
+ margin-top: 0;
+}
+.toc li ul {
+ margin-bottom: 1rem;
+}
+.toc > ul > li > ul {
+list-style-type: upper-alpha;
+}
+.toc > ul > li > ul > li > ul {
+list-style-type: lower-roman;
+}
+</style>
+<!-- Yes, it's a hot mess. -->
+
+[TOC]
+
+## Motivation
+
+This tutorial will describe and provide examples for two types of automation functions. The first function
is a tool to capture and execute “Macro” commands. The second function is a set of Automation Tools to
capture and run a “Flow” or “Process”. The code for this tutorial is written using Gimp-Python and should be
platform portable – able to run on either Linux or Windows operating systems. <sup>\*</sup>
+
+The goal of these functions is to provide tools that speed up the editing process, make the editing process
more repeatable, and reduce the amount of button pushing the user has to do. Taking over the button pushing
and book-keeping chores allows the user to focus on the more creative part of the editing process.
+
+These automation tools are examples so please modify them to suit your needs. The goal of the tutorial is to
provide and explain a working example. If the coding style seems a bit rough, I apologize, I am not a
programmer.
+
+The main body of this tutorial will be discussing the ideas behind automating the editing process. Hopefully
we can keep the focus on the concept without getting lost in the details of the included example. The details
of how to setup and run the example code and what the automation example is supposed to accomplish will be
covered in appendices to the tutorial. We are not going to cover python programing as it is already well
documented.
+
+This tutorial will use some of the concepts covered in an earlier tutorial “[Automated Jpg to
Xcf](../AutomatedJpgToXcf/)”. It would probably be helpful to read through the earlier tutorial for
introductory example.
+
+<sup>\*</sup> Hopefully it is easy to adapt it to Apple OS as well.
+
+## An introduction to Macros
+
+Before we dive into a description of the code, let's take a brief walk through the process of capturing and
running a “Macro”.
+
+Suppose we wanted to set up the grid spacing so that it is centered on the image, is a square grid, is
scaled so there are 24 grid blocks in the 'long' dimension, and is an on-off dash pattern. We could enter the
following code fragment in the Gimp “Python Console” (under the “Filters” pull down menu) to set the grid up.
+
+*Example - GIMP-Python Code Fragment*
+
+ :::python
+ >>> theImage = gimp.image_list()[0]
+ >>> centerX = theImage.width/2
+ >>> centerY = theImage.height/2
+ >>> gridSpacing = max(theImage.width, theImage.height)/24
+ >>> pdb.gimp_image_grid_set_offset(theImage, centerX, centerY)
+ >>> pdb.gimp_image_grid_set_spacing(theImage, gridSpacing, gridSpacing)
+ >>> pdb.gimp_image_grid_set_style(theImage, GRID_ON_OFF_DASH)
+
+
+<figure>
+<img src="{filename}CommandsPythonConsole.jpg" alt="CommandsPythonConsole.jpg" />
+<figcaption>
+Commands in the Python Console
+</figcaption>
+</figure>
+
+If you watch the image as you enter the commands and have the Grid turned “ON” you will see the grid spacing
on the active image change as we execute these commands.
+
+The tool we are writing in this tutorial will allow us to copy this code fragment into a text file, add a
name and optional comments, and access it through a menu widget so we can rerun this code fragment on other
images. The tool will access the “macro” code fragment using the name we assigned through a pull down menu.
+
+The ability to save the macro code fragments allows us to build up a library of editing shortcuts that will
not only save time, but do the job better than you could be simply pushing the buttons. In this case we made
the grid spacing based on a percentage of the image size rather than a fixed size in either inches, pixels,
or cm.
+
+## Macro Implementation – in Broad Strokes
+
+Let's touch upon the main ideas that we are going to use to implement the macro recording and execution
scheme that we can use to capture and run a set of commands.
+
+1. The command set will be read and parsed into a data structure. Each command set block will have a name
and consist of commands and comments.
+2. The data structure will be read for a list of macro names. This list will be used to populate a GUI
widget so we can select a macro by name.
+3. From the named Macro, the data structure will return a list of commands.
+4. The list of commands will be run in an 'exec' loop:
+
+Example "Exec" Loop:
+
+ for Cmd in commandList:
+ exec(Cmd)
+
+
+
+<figure>
+<img src="{filename}CommanderMacroSubMenu.jpg" alt="CommanderMacroSubMenu.jpg" />
+<figcaption>
+Commander Macro Sub-Menu
+</figcaption>
+</figure>
+
+### Architecture
+
+When you want to write a script to provide a single function, the common and obvious approach is to write a
single in-line program, register the program, and provide a user interface if it is called for. Our
Automation Example is multi-functional – more like a system, and we want to leave some of the functionality
somewhat fluid. If we consider the system (data and code) and make good architectural choices we can
accomplish our goal without making the code overly complex.
+
+### Execution Model
+
+We will be breaking the execution of our automation functions into three different categories:
+
+1. User Interface Functions
+2. Base Class and Functions
+3. Pseudo Code
+
+Let's examine these categories briefly:
+
+The <u>**User Interface Functions**</u> are the top level function that are activated from the menus. They
are the 'main' function, the Registration Block, and the function that is registered in the Registration
Block. We will be deliberately keeping the User Interface Function code sparse. While the UI Functions afford
lot of functionality, they are rather fragile and difficult to debug. The approach we will use is to get the
UI running and call a function that can be written and debugged independently minimizing the edits to the
User Interface.
+
+The <u>**Base Class and Functions**</u> are just normal python classes and functions that can be run from a
shell. These functions do not depend upon the gimpfu library could be run in any python shell (including the
Gimp-Python Shell).
+
+* If you make a syntax error in the course of an edit, you want to be able to quickly isolate it to a
particular line in a particular function. This is easier to do from the shell than when running the program
from a GUI.
+* Keeping the generic python code separate from the code that depends upon the gimpfu library minimizes
the impact that future releases of gimp will have on the scripts. Because the gimp procedure calls are
handled by Pseudo Code rather than the Base Class and Functions we have less risk of compatibility from
future releases of Gimp within the Base Class and Function.
+
+The **<u>Pseudo Code</u>** is the portion of the overall system functionality that we want to deliberately
leave fluid. The functionality of the Pseudo Code is intended to be simple editing steps (which should cover
a pretty wide range of edits).
+
+* The types of things that you might do in Pseudo Code could include: copy layers, name layers, run
filters, set layer modes, set layer opacity, merge layers, and run PDB functions. The pseudo code can access
basic image characteristics and perform operations with them.
+* Pseudo Code is simple Gimp-Python code fragments. Because there is no support for indenting, a simple
test for how complex your Pseudo Code can become is whether you need to indent or not (note that you can
write a simple 'if' statement on one line). In spite of this restriction we will show with some examples that
you can accomplish quite a bit of editing with macros.
+
+A final thing that we need to talk about that is not a 'category' of execution but is something that is an
important part of our Execution Model is **<u>Scope</u>**. We are only going to touch on a couple of points
that affect when lists are defined for dynamic User Interface selection.
+
+* The Gimp User interface widgets allow you to select items from a list.
+* You can specify the list within the widget, or pass the widget a list by name **<u>IF</u>** you define
the list outside of the function being called. The list must be defined at the level of the function main().
+* By keeping the scope of the User Interface lists at the top level, we are able to use the list name in
**<u>both the user interface and in the function being called</u>**. In this way we can use the actual
argument being selected rather than its index position in a list.
+* An architectural advantage is we create this list with a function that reads a configuration file. We
only have to define and maintain this configuration list in one place within our system and use the resulting
list in as many places as we want by calling a reading function. This is how we will get new macros to show
up in the menus when we add them.
+* The following skeletal code fragments illustrate defining a list 'cmdList' at the top level – 'main',
and using it within the registration block and function. Because it is defined at the ‘main’ level, we can
reference it within the function and registration block. We can recover the argument from the index (passed
by the widget) because we are using the same list in both places:
+
+<span style="font-style: italic">Example - Lists and Scope in Functions</span>
+
+ cmdList = cmdrReadObj.CommanderMacros()
+ #
+ def autoCommander(theImage, cmdListIndex):
+ ...
+ commanderName = cmdList[cmdListIndex]
+ ...
+ #
+ register (
+ "autoCommander", # Name registered in Procedure Browser
+ ...
+ [
+ ...
+ ( PF_OPTION, "cmdSet", "Select a command", 0, cmdList ),
+ ],
+ main()
+
+
+### Data Model
+
+We now need to talk about the form and organization of the data that we intend to use. The way that we
choose to organize our data can have a dramatic impact on the complexity of the functions that we need to
write. In our case we can take advantage of a couple of somewhat more sophisticated data models to make the
actual functions fairly straightforward. We will be using “trees” (Python ElementTree) and XML data.
+
+### Trees and XML Data
+
+Python has several built in data structures such as dictionaries, lists to name a couple. A very powerful
library structure that is well suited to our particular needs is a “tree”. A couple of the key features that
make them well suited for our application are:
+
+1. Trees have a natural 'hierarchical' feel to them, kind of like a directory structure or the 'folders' of
an operating system. The levels of hierarchy can be thought of as ‘containing’ the contents in the lower
level.
+2. A branch can hold an indefinite number of elements, and those elements can be either a leaf with
attributes or a sub-branch to another level. This lends a lot of flexibility with the way we structure of the
data.
+3. The input / output format is XML, which is not only hierarchical, but it is text so it is human readable
and portable to any platform (computer / OS).
+
+<figure>
+<img src="{filename}XmlHierarchyContainers.jpg" alt="XmlHierarchyContainers.jpg" />
+<figcaption>
+XML Hierarchy - Containers
+</figcaption>
+</figure>
+
+The examples use ElementTree to read and write the data between trees and XML. ElementTree is included with
Python and described in the Python documentation, so we will not go into detail about the mechanics of tree
structures here.
+
+You might be wondering at this point where these XML file will be located. The functions that read and write
the XML files are expecting to find the XML under a directory named ‘myXml’ which you will have to create
under you user gimp directory. If you are using Linux and your home directory is ‘stephen’ the path would
look something like:
+
+ /home/stephen/.gimp-2.8/myXml
+
+If you are using Windows the path would look something like:
+
+ C:\Users\stephen\.gimp-2.8\myXml
+
+We will be dealing with a couple of types of pseudo code and xml files, and those will be keep in separate
directories under myXml, but we will get to that in a bit.
+
+## Macro Implementation – Revisited
+
+Now that we have talked about the execution model and data model, we can revisit the “Implementation – In
Broad Strokes” and tie the steps to the code that is handling them.
+
+### Pseudo Code to XML
+
+Our first item was to **<u>read the pseudo code and parse it into a data structure</u>**. That data
structure is going to be a Tree.
+
+We can begin writing a pseudo code file by copying and pasting a set of commands from the gimp python
console into a text file whose name ends in “.def”. The “>>>” preceding each command will be the “keyword” to
indicate a command.
+
+The pseudo code will be in a file, in this example it is named NormalGridCanvas.def. Each line begins with a
keyword. Keyword choices are: “commander>”, “macro>”, “comment>”, or “>>>”.
+
+The class XmlGenerator() in autoBase.py contains a function GenCommanderXml() which reads all of the \*.def
files in ~/.gimp-2.8/myXml/commander, inserts the lines into a tree (after removing the keyword), and then
writes the tree out to a file named combinedCommander.xml.
+
+The keyword will determine both the “tag” associated with the line of pseudo code, and whether it is a
“branch” element (macro name) or a “leaf” element (command or comment). We are assigning both a definition
and a level in the hierarchy for each line of pseudo code text as we read it into the tree.
+
+*Example - Pseudo Code Example - NormalGridCanvas.def*
+
+ commander>Normal Grid and Canvas
+ macro>
+ comment>Shrink the Canvas back to fit the layer
+ >>>theImage.resize_to_layers()
+ comment>Set grid to origin and size = image
+ >>>pdb.gimp_image_grid_set_offset(theImage, 0, 0)
+ >>>pdb.gimp_image_grid_set_spacing(theImage, theImage.width, theImage.height)
+
+
+After all of the \*.def files are read into the tree and written back out in the form of an XML file, the
formatting is done. Writing out a tree automatically generates all of the containing enclosures, essentially
making properly formatting the XML a trivial task. The fragment from combinedCommander.xml illustrates the
XML from the pseudo code in NormalGridCanvas.def.
+
+<span style="font-style: italic">Example - combinedCommander.xml (fragment)</span>
+
+ <combined>
+ Definition
+ ...
+ <commander>
+ Normal Grid and Canvas
+ <comment>
+ Shrink the Canvas back to fit the layer
+ </comment>
+ <command>
+ theImage.resize_to_layers()
+ </command>
+ <comment>
+ Set grid to origin and size = image
+ </comment>
+ <command>
+ pdb.gimp_image_grid_set_offset(theImage, 0, 0)
+ </command>
+ <command>
+ pdb.gimp_image_grid_set_spacing(theImage, theImage.width, theImage.height)
+ </command>
+ </commander>
+ ...
+ </combined>
+
+_\* The XML above was run through an online XML pretty printer for readability. The XML from ElementTree is
functional, but hard to read._
+
+<figure markdown="span">
+<img src="{filename}PseudoCodetoXmlFunction.jpg" alt="PseudoCodetoXmlFunction.jpg" />
+<figcaption>
+Creating XML from \*.def files
+</figcaption>
+</figure>
+
+The Xml generator can be called from a GUI menu.
+
+<figure>
+<img src="{filename}PseudoCodeImported.jpg" alt="PseudoCodeImported.jpg" />
+<figcaption>
+Xml files built
+</figcaption>
+</figure>
+
+### Displaying the Macro Names in a Menu
+
+In our discussion of Scope in the Section “Execution Model”, we showed an example code fragment where we
created a list “cmdList”. The code was from the example autoCommander.py and uses a class BaseXmlReader and
the function CommanderMacros() which resides in autoBase.py.
+
+* The list of Macro Command Names is created by loading the XML file combinedCommander.xml into an
ElementTree.
+* The tree is traversed at the branch level (the tag <commander>), and the branches text which are the
names of the macros are built into a list. The list is essentially built with a “for loop”.
+* The list is passed to the widget and used to select the macro you want to use.
+
+### Running a Specific Macro
+
+The final point to expand upon is how we fetch and run the specific set of commands for a selected Macro.
+
+* We can derive the name of the Macro by way of the menu selection (registration block of
autoCommander.py).
+* We will again use the BaseXmlReader class, but this time we will utilize the CommanderExtract function
passing the Macro name as an argument. The CommanderExtract function traverses the tree branch by branch as
before when we were gathering the names of the Macros, except it is comparing the names against the passed
argument as we go. When the CommanderExtract function finds a branch matching the argument, it drops down a
level to read the leaf elements under that branch.
+* The leaf arguments whose tags are set to “command” are appended to the list that will be returned for
processing. The leafs whose tags are “comment” will be ignored.
+* The newly created returned list will be run through in a “for loop” which will process each line as a
separate command using the python “exec” function.
+
+The variable 'theImage' is defined with the autoCommander function and can be used as a handle to access
information about the active image by the Macro commands.
+
+### Commander Macros – Summary
+
+The discussion above has described how we can generate a macro by running a set of commands in the Python
Console, paste those commands into a text file adding a name and comments, and then making it available for
use.
+
+The code for transforming the pseudo code into a macro is in autoWriteXml.py. The code to display the menu
of Macros you have written and execute them is in autoCommander.py. The Classes referenced by these two
scripts are in autoBase.py.
+
+The text files that you write for your macro definition need to be put in a directory
~/.gimp-2.x/myXml/commander and have an extension of '.def'. Create a separate \*.def file for each macro.
+
+## An Introduction to Automated Editing
+
+Macros are a terrific way to make the editing process faster and more repeatable, they do though have some
limitations.
+
+1. There are times when the order of the editing steps are important.
+2. They have to be applied one at a time.
+3. You have to keep track of what has already been done and what yet still remains.
+
+A Workflow, or a Process, or a Recipe, what ever you may be used to calling it (I prefer Workflow) can be
viewed as a set of ordered steps. These steps would usually correspond to the actions that you would
typically code up in a set of Macros. We will automate a Workflow that runs the right steps at the right time
and records the editing progress on each of the images.
+
+Let's quickly go over how how capturing and running a “Workflow” is going to work before we dive in. We
capture the code fragments that describe the editing process in the same way that we did for the macros. We
can either copy and paste from the python console to generate a series of commands, or we could copy them
from a working macro.
+
+The steps in a workflow aren't in fact very different than the Commander Macros that we described in the
earlier part of this tutorial, the only real difference is they are an ordered set to be followed.
+
+The way that we are going to use the automation tools is a bit different than using macros. When we want to
use a macro we are running it on the image that is open in editor window. The automation tools on the other
hand run on a directory of images, so we run it without an image being open in the editor window.
+
+We mark the images that are ready to move to the next step of the workflow and then run the automation
tools. The automated update looks at each image in the work directory, if it is marked for update, it gets
updated to the next step, if it is not marked for update it is left alone.
+
+The automated update will move the marked images to the next step of their assigned workflow essentially
keeping track of the 'book-keeping' for us. A time management benefit is if there are several images
requiring a filter that takes a bit of time to run, you can go do something else while they are running.
+
+## Automation Tool Implementation – In Broad Strokes
+
+Let’s touch upon the main ideas that we are going to use to implement the automated workflow recording and
execution tasks that we are talking about above.
+
+1. The pseudo code will be read and parsed into a data structure. Each pseudo code block (or step) will
have a name and consist of commands and comments. Each workflow will have a name and will contain an ordered
set of steps or pseudo code blocks.
+2. The automation flow will generate a list of images in a given directory. It will then step through that
list checking whether an image is marked for update or not.
+3. If an image is marked for update, the automation flow will determine the name of the workflow and the
name next step to perform on the image. The name of the 'workflow' and the 'next step' will be used to select
a list of commands.
+4. The list of commands will be run in an 'exec' loop:
+5. The 'current step' and 'next step' for the image will be incremented and then saved with the image.
+
+### Architecture
+
+We commented in the section on macros that good architectural choices can accomplish our goal without making
the code overly complex. This argument is as compelling for automated updating of our images. The
Architecture and Code for our automated updating tools will be very similar to the ones used for capturing
and running the “Commander” macros.
+
+### Execution Model
+
+As in our discussion of the Macros, we will be breaking the execution of our Automation Functions into three
different categories:
+
+1. User Interface Functions
+2. Base Class and Functions
+3. Pseudo Code
+
+We won't rehash these topics but instead comment on the difference, which is the structure of the pseudo
code. The organization of workflows as a set of steps where each step is a set of commands prompts us to
organize the pseudo code in a similar manner, where we think of steps containing a sequence of commands, and
workflows containing a sequence of steps. In order to reflect this additional level of hierarchy or
containment, we will use an additional keyword in the workflow pseudo code.
+
+### Data Model
+
+There are two special types of data for the automated flow:
+
+1. Trees and XML data are similar to the “Commander Macros”.
+2. Parasite (or Property) data to keep track of the particular workflow that is being used to edit an
image, the next step that is to be used, and whether an image is ready to be incremented to the next step.
+
+### The Image and Parasites (or Property) Data
+
+The Image type that we will be using for all of our work is the native Gimp \*.xcf format. This image format
saves all of the layers and modes that we might set while editing and also saves a type of data called
Parasites, which are similar to Properties on many other systems.
+
+Parasites are like variable can be referenced by name in order to access their value. Like variables they
can be assigned and read. Unlike variables, parasites are persistent, very persistent. A parasite, when
assigned to an image, becomes part of the image and is saved with the image file. A parasite that is assigned
and saved with an image can be read after gimp is closed and reopened, it is just like any other file data in
that respect.
+
+Parasites are also very portable, you can read and write parasites using either the scheme based or python
based scripts. They are also independent of the operating system, so you can write a parasite to an image on
your Linux Desktop machine, and read it a week later on your windows based laptop assuming that you saved the
images in the native gimp \*.xcf file format. Parasites can also be written to specific layers, but for our
present needs, the image parasites are all we are using.
+
+Because the parasite is associated with the image, and it is persistent until it is overwritten or removed,
it is an ideal tool for keeping track of the state of the image's progress in the editing process. Beyond
being able to just take notes, the values of the parasites can be used like a property to make decisions and
influence the execution of the script that has read the parasite data.
+
+If for example we opened an image that had two parasites (properties), named 'UpdateFlag' and 'Flow', we
could use the values from those parasites to make decisions:
+
+_Example – Decisions based on Parasite / Property Values_
+
+ UpdateFlag = str(theImage.parasite_find('UpdateFlag'))
+ Flow = str(theImage.parasite_find('Flow'))
+ if (UpdateFlag == 'YES'):
+ if (Flow == 'Standard'):
+ { run commands for Standard flow }
+ elif (Flow == 'SemiAuto'):
+ { run commands for SemiAuto Flow }
+ elif (UpdateFlag == 'NO'):
+ { do nothing }
+
+
+Reading and writing parasites to an image does have one idiosyncrasy worth comment on which is the format of
the data being written. You must express the parasite as an ordered set of 'Name', 'Index', and 'Value'. Name
and Value are both strings, and the Index is a small integer, (stay between 1 and 254). If you have not used
parasites before you might be wondering how you determine a 'correct' value for the index. You may:
+
+1. Throw a dart at a dartboard and use the result (assuming you hit the board).
+2. Or, feel free to use my personal favorite '5'.
+
+As long as you pick a number and preferably stick with it, everything will be fine. When you read the
parasite value, the functions in the Scheme scripting interface will give you the 'Name', 'Index', and
'Value'; the functions in the Python scripting interface will only return the 'Name' and 'Value'.
+
+Writing the parasite is called 'attaching' and reading the value back is called either 'get' or 'find'
depending on the method you choose to use. You can read and write parasites from within scripts or from
either of the python or scheme consoles.
+
+### Running the Automation Tools on a Workflow
+
+Our final topic about an Automated Workflow in our “Broad Strokes” is how to setup and run the Workflow on a
set of images. We are running on a set of images rather than just one so we open up gimp without an image in
the editor window. The tools will open up, work on, save, and close the images one by one.
+
+In an earlier tutorial “[Automated Jpg to Xcf](../AutomatedJpgToXcf/)” we outlined how to import a directory
containing jpeg images into a directory with gimp xcf images. The automation tool implementation modifies the
import function to add the assignments of parasites to the images. The images are assigned to a particular
flow as they are imported, and the initial set of flow control properties are written and saved as part of
the import process. The jpeg-to-xcf function also runs the Automation Process (Auto Update Image) one time to
put all of the images on the first step of the assigned flow, so they are ready for their first manual
adjustment right after they are imported.
+
+After opening and (optionally) adjusting an image you mark the image as ready for the next step by setting
the “UpdateFlag” parasite to a value of “YES”. This is accomplished with a function that is available from
the menu: “Automation → A2 Mark for AutoUpdate (File)”. (Note: Since you will be doing this a lot, it is very
convenient to use a keyboard shortcut to run this function).
+
+Images are moved to the next step in their flow by running the “Auto Update Images (Directory)” function
from the menu. This will increment all of the images whose UpdateFlags are set to YES to the next step in
their flow. Note that since each image has a record of its own next step and flow, there is no requirement
for the images in a directory to be on the same step or even using the same workflow.
+
+The mechanics for creating XML from pseudo code for the workflows, properties, and commander macros is to
run the function Pseudocode to XML from the menu (Automation → Utilities → Pseudocode to XML).
+
+The export XCF to JPG function in the “Automation” menu opens each xcf file in the source / work directory
and looks at the properties of the image. If the image is “Finished”, at the end of the flow, it is exported.
The images that are still being work on are left alone.
+
+<figure>
+<img src="{filename}RunningAutoUpdate.jpg" alt="RunningAutoUpdate.jpg" />
+<figcaption>
+Running AutoUpdate
+</figcaption>
+</figure>
+
+## Automation Tool Implementation – Details
+
+### Pseudo Code
+
+#### Workflow Pseudo Code
+
+You can generate the list of commands that we wish to perform on an image in the python console and when you
have it working just right for the step you would like to perform you can copy and paste them into a pseudo
code text file. The “Pseudocode to XML” function will be looking for files that have the file extension
“.def” so it will convert all of the \*.def files in the flow directory into XML.
+
+As in the case of the macros, you can put in comment lines beginning with “comment>” and blank lines to make
the code fragments more readable and easier to understand when you come back to make enhancements in a couple
of months.
+
+Each set of commands is contained by a “Step” which uses the key “step>”. The top level container is the
Workflow which uses the key “flow>”. Each workflow can be specified in its own “.def” file. The “Pseudocode
to XML” function will read all of the \*.def files and create a single XML file named combinedFlow.xml in the
myXml/flow directory.
+
+#### Property / Parasite Pseudo Code
+
+The other type of pseudo code that we need to talk about is the code for properties. The pseudo code for
properties is contained in the “myXml/property” directory. The file flagProperties.xml is created by the
“Pseudocode to XML” function from the flagProperties.def file. In the case of properties it only really makes
sense to have one set of properties for all flows. The properties defined in the flagProperties.xml file will
be the “flag” properties. You can set the property name, comments, the option values, and the default value
(initial setting). The “property>” key sets the property name and contains the other property values within
the XML. The other keys are “comment>”, “default>”, and “options>”. The key “flags>” with the name Control
Properties is used at the beginning of the file to define the top level container.
+
+There are three properties that are assigned by the automation scripts and are not normally edited by the
user or defined in the “.def” file. They are created, read and modified by the scripts. These are the flow
control properties, “Flow”, “CurrentStep”, “NextStep”.
+
+You can see all of the properties and current assigned values for a particular image using the menu function
“Automation” -> “A1) Display Assigned Parasites (File)”.
+
+<figure>
+<img src="{filename}ParasitesImage.jpg" alt="ParasitesImage.jpg" />
+<figcaption>
+Assigned Parasites
+</figcaption>
+</figure>
+
+### Properties and Image State – Flow Control Parasites
+
+One way to think of a workflow is as a series of states. These states are what we have been referring to as
steps. As the image evolves it transitions from one state to another it moves through the workflow from
beginning to end, state by state (or step by step).
+
+The Flow Control Parasites provide a method to make each image “self aware” of its own state, which is its
assigned “Flow” and “CurrentStep”. It is also aware of the next step to which it will proceed, which is
determined by its assigned “Flow” and “NextStep”. The order for the steps is determined by the order they are
listed in the pseudo code. When an image is updated the “NextStep becomes the new “CurrentStep” and a new
“NextStep” is looked up and written to the image as a parasite.
+
+Let's examine the steps of the “Standard” flow example that is included with this tutorial. The steps the
image will go through are:
+
+<span style="font-style: italic">Example – States or Steps in the Standard Flow Example</span>
+
+<style>
+table {
+max-width: 40rem;
+font-size: 0.85rem;
+margin: 1rem auto;
+}
+table td {
+ padding: 0.25rem;
+ border: solid 1px #eee;
+}
+
+</style>
+
+<table>
+<tbody>
+<tr>
+<th></th>
+<td class="emphesize">CurrentStep</td>
+<td class="emphesize">NextStep</td>
+</tr>
+<tr>
+<th>1.</th>
+<td>First</td>
+<td>Alignment</td>
+</tr>
+<tr>
+<th>2.</th>
+<td>Alignment</td>
+<td>DynamicRange</td>
+</tr>
+<tr>
+<th>3.</th>
+<td>DynamicRange</td>
+<td>Retinex-Filter</td>
+</tr>
+<tr>
+<th>4.</th>
+<td>Retinex-Filter</td>
+<td>Sharpen</td>
+</tr>
+<tr>
+<th>5.</th>
+<td>Sharpen</td>
+<td>ColorAdjust</td>
+</tr>
+<tr>
+<th>6.</th>
+<td>ColorAdjust</td>
+<td>FINISHED</td>
+</tr>
+<tr>
+<th>7.</th>
+<td>FINISHED</td>
+<td>FINISHED</td>
+</tr>
+</tbody>
+</table>
+
+
+The state “First” is assigned by the Jpeg to Xcf function. This step is assigned automatically regardless of
the flow. The steps following the “First” step, “Alignment”, “DynamicRange”, “Retinex-Filter”, “Sharpen”, and
“ColorAdjust” are assigned through the Xml representation of the flow. The Step “FINISHED” is assigned
automatically when the end of the list of steps is reached.
+
+When the images are first imported, the autoUpdate function is run to move the images from the automatically
assigned “First” step to executing the first real step of the flow. When the CurrentStep becomes “FINISHED”,
the image is ready to be exported by the Xcf to Jpeg function.
+
+### Status Flag Parasites
+
+The Flag Parasites are for decision making. They will be assigned with a default value when the image is
imported into a flow. The parasite whose function is flow control is the “UpdateFlag”. The value of the
UpdateFlag is read to determine if an image is ready to be moved to the next state.
+
+Flag Parasites other than the UpdateFlag can be modified or eliminated to suit the needs of your pseudo code
functions. You could for example add Flags with values that determine certain layer Opacity, or determine
whether certain filters will be run. There are a lot of possibilities for this powerful capability.
+
+### Automation Workflow - Summary
+
+Running an Automated Workflow is almost trivially easy, once you have it set up to your liking. There is
some work to be sure in setting up a workflow, but the reward is a consistent and apparent (obvious which
steps have been run) workflow or process.
+
+There are several things you may need to set up Gimp Preferences in order to optimize the operation.
+
+## Conclusion
+
+The combination of an available programming language, well suited data structures, the ability to affix
properties to images, and a rich set of editing features offer powerful possibilities for automating the
editing process.
+
+Using an automated workflow has changed the way that I use Gimp for editing my photos. I hope that you can
leverage these examples to make working with Gimp more productive for yourself. Links to the example scripts
and pseudo code are in the following appendices.
+
+## Appendix – Notes
+
+The following Appendices contain notes which are more specific to setting up the example scripts, the
example \*.def files, and comments on debugging.
+
+### Setting up the Example Scripts
+
+All of the example scripts begin with “auto”, e.g. autoAutoUpdate.py, autoBase.py, ... If you try them but
then decide you don't like them they should be pretty easy to find and remove. The following example scripts
should be loaded into your gimp/plug-ins directory. Something like /home/stephen/.gimp-2.8/plug-ins if your
user name is stephen and you were using gimp 2.8\. Click on the filename to download.
+
+1. [autoAutoUpdate.py](plug-ins/autoAutoUpdate.py)
+ Runs the auto update function on a directory of images.
+2. [autoBase.py](plug-ins/autoBase.py)
+ Contains the classes that read and write the XML files that affect how the update works.
+3. [autoCommander.py](plug-ins/autoCommander.py)
+ Runs the 'Commander' macros.
+4. [autoJpegToXcf.py](plug-ins/autoJpegToXcf.py)
+ Imports the images into xcf format and assigns properties to image.
+5. [autoRWparasites.py](plug-ins/autoRWparasites.py)
+ User Interface functions to read and write image parasites from the menu.
+6. [autoWriteXml.py](plug-ins/autoWriteXml.py)
+ Reads \*.def files and generates XML for commander macros, workflows, and properties.
+7. [autoXcfToJpg.py](plug-ins/autoXcfToJpg.py)
+ Exports the finished images back to jpeg format.
+
+### Setting up the Example Pseudo Code
+
+Underneath your gimp directory (something like /home/stephen/.gimp-2.8) you need to create a directory named
'myXml'. Don't get creative here, the scripts are looking for this specific directory. It will be in the same
directory that contains your plug-ins directory. Underneath the myXml directory create three more
directories, 'commander', 'flow', 'property'. These will be where your pseudo code and three kinds of XML
will be located.
+
+#### Pseudo Code for Commander Macros
+
+Copy the following example \*.def files into the “commander” directory
(/home/stephen/.gimp-2.8/myXml/commander – assuming a home directory of /user/stephen and a gimp version
2.8). They are example Commander Macros pseudo code files. Click on the filename to download.
+
+1. [centeredgrid.def](myXml/commander/centeredgrid.def)
+2. [colorAdjust.def](myXml/commander/colorAdjust.def)
+3. [createColorLayer.def](myXml/commander/createColorLayer.def)
+4. [createDynamicRangeLayer.def](myXml/commander/createDynamicRangeLayer.def)
+5. [expandCanvas.def](myXml/commander/expandCanvas.def)
+6. [normalGridCanvas.def](myXml/commander/normalGridCanvas.def)
+7. [renameBaseLayer.def](myXml/commander/renameBaseLayer.def)
+8. [retinexLayer.def](myXml/commander/retinexLayer.def)
+9. [sharpenLayer.def](myXml/commander/sharpenLayer.def)
+
+Hopefully with the comments and by running them, their function will be apparent. They should be enough to
get you started writing some macros of your own.
+
+When you run the “Pseudocode to XML” Utility function, it will read all of the \*.def files in this
directory and write an XML file in this directory called “combinedCommander.xml”. “combinedCommander.xml” is
the file that is accessed to list and run all of your macros.
+
+#### Pseudo Code for Automation Workflows
+
+Copy the following \*.def files into the “flow” directory (/home/stephen/.gimp-2.8/myXml/flow). They are
example Workflow pseudo code files.
+
+1. [fullauto.def](myXml/flow/fullauto.def)
+2. [semiauto.def](myXml/flow/semiauto.def)
+3. [standard.def](myXml/flow/standard.def)
+
+These three workflows all follow the same basicsteps of the standard workflow. The semiauto and fullauto
workflows combine some of the steps. The idea is to give you a couple of different workflows to play with.
The fullauto illustrates that you really can pack a lot of editing into a “step” but is probably too
automatic to be of practical use.
+
+When you run the “Pseudocode to XML” Utility function, it will read all of the \*.def files in this
directory and write an XML file in this directory called “combinedFlow.xml”.
+
+#### Pseudo Code for Properties
+
+Copy the following \*.def file into the “property” directory (/home/stephen/.gimp-2.8/myXml/property). It is
an example Property pseudo code file (for Flag Properties / Parasites).
+
+1. [flagProperties.def](myXml/property/flagProperties.def)
+
+When you run the “Pseudocode to XML” Utility function, it will read \*.def file in this directory and write
an XML file in this directory called “flagProperties.xml”.
+
+### Pseudo Code Syntax
+
+#### Commander Pseudo Code
+
+There are three keywords used for writing commander pseudo code:
+
+1. `commander>` - The text following this keyword is the Macro Name. This keyword must be the first keyword
in the file. This is the “container” or the root of the tree for the following comments and commands.
+2. `comment>` - The text following this keyword is for descriptive comments. The comments will be
represented in the pseudo code \*.def file and in the resulting XML. When the XML is read for processing,
comments will be ignored.
+3. `>>>` - The text following this keyword is taken as a python statement. Then the resulting XML is read,
the command statements will be passed to the commander script to be processed in order.
+
+Note that lines beginning with “#” are ignored. You may indent if you like for readability. Leading white
space is stripped off.
+
+_Example - Commander Pseudo Code Example_
+
+ commander>Centered Grid
+ comment>** Set up the grid for Rotate and or Perspective Transform
+ comment>* Set values from python-fu image object
+ >>>centerX = theImage.width/2
+ >>>centerY = theImage.height/2
+ >>>gridSpacing = max(theImage.width, theImage.height)/24
+ comment>* configure grid with PDB functions
+ >>>pdb.gimp_image_grid_set_offset(theImage, centerX, centerY)
+ >>>pdb.gimp_image_grid_set_spacing(theImage, gridSpacing, gridSpacing)
+ >>>pdb.gimp_image_grid_set_style(theImage, GRID_ON_OFF_DASH)
+
+
+#### Property Pseudo Code
+
+There are five keywords used for writing property pseudo code:
+
+1. **flags** - The text following this keyword is the top level container, or in other words, the root of
the tree.
+2. **property** - The text following the keyword is the name of the property / parasite. This is a second
level container or a branch of the tree. It will contain all of the following leaf keywords (comment,
default, and option) until the next property statement.
+3. **comment** - The text following this keyword is for descriptive comments. The comments will be
represented in the pseudo code \*.def file and in the resulting XML. When the XML is read for processing,
comments will be ignored. The comments are leafs of the tree.
+4. **default** - The text following this keyword is the default property value. The default value is a leaf
of the tree.
+5. **option** - The text following this keyword is one of the possible property values. There can be
several option values for any given property. The option values are leafs of the tree.
+
+_Example - Property Pseudo Code Example_
+
+ flags>Control Properties
+ property>UpdateFlag
+ comment>Initial value set on import to Xcf
+ comment>Set by user on Image from Automation Menu
+ comment>Read by autoAutoUpdate (updateImage function)
+ comment>Updates Image (executes Next Step in Flow) if YES
+ comment>Reset to NO by updateImage
+ default>YES
+ option>NO
+ option>YES
+
+ property>EnhanceColorLevel
+ default>NORMAL
+ option>EXTRA
+ option>NORMAL
+ option>MID
+ option>NONE
+
+
+#### Flow Pseudo Code
+
+There are four keywords used for writing flow pseudo code:
+
+1. `flow` The text following this keyword is the top level container, or in other words, the root of the
tree. This is the name of the flow.
+2. `step` The text following this keyword is the first level branch from the root. The step contains
comments and commands. The steps select groups of commands for execution.
+3. `comment` Comments are leafs of the tree.
+4. `>>>` Commands are leafs of the tree. When the Xml is read the commands will be processed in the order
in which they appear in the step.
+
+Lines beginning with a “#” are ignored. Leading white space before the keywords is stripped out. White space
after the keyword is stripped out.
+
+### Running code in the Gimp Python Console
+
+The Python-Fu console is a python shell in which you can run not only the gimp pdb functions, but your own
python functions as well.
+
+First, set up and verify Python Path to include your user plug-ins directory:
+
+_Example – Setting the Python path in the Python-Fu Console_
+
+ >>> import sys
+ >>> sys.path.append('/home/stephen/.gimp-2.8/plug-ins/')
+ >>> sys.path
+
+_echos back a list of paths that include path added above_
+
+Next, run your python functions in the Gimp Python-Console . This example uses the 'TestBench' class to run
functions in the other classes in the autoBase.py module. Object instances of the TestBench class echo back
results to the screen.
+
+1. Set the working directory to the user plug-ins directory
+2. Import the autoBase module functions
+3. Create and instance of the TestBench class
+4. Run the TestXmlGen and TestXmlRead functions
+
+_Example – Running your own Functions in the Python-Fu Console_
+
+ >>> import os
+ >>> os.chdir('/home/stephen/.gimp-2.8/plug-ins')
+ >>> from autoBase import *
+ >>> testola = TestBench()
+ >>> testola.TestXmlGen()
+ >>> testola.TestXmlRead()
+
+
+The screen shot below illustrates the process on the Windows version of Gimp / Python Console (TestXmlGen is
pictured, TestXmlRead produces several pages of output):
+
+<figure>
+<img src="{filename}Appendix-testing-in-python-console.JPG" alt="Appendix-testing-in-python-console.JPG" />
+<figcaption>
+Image - Running your code in the Gimp Python Console
+</figcaption>
+</figure>
+
+## Further Reading
+
+* [Automated JPG to XCF](../AutomatedJpgToXcf)
+
+<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license"><img alt="Creative Commons
License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" style="border-width:0"></a><br><span
xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Automate Editing</span> by <a rel="cc:attributionURL"
xmlns:cc="http://creativecommons.org/ns#">Stephen Kiel</a> is licensed under a <a
href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license">Creative Commons
Attribution-ShareAlike 3.0 Unported License</a>. The code sources in this tutorial are licensed by Stephen
Kiel under the conditions of the <a href="https://www.gnu.org/copyleft/gpl.html">GNU Public License GPL
V3</a>.
diff --git a/content/tutorials/AutomatedJpgToXcf/index.md b/content/tutorials/AutomatedJpgToXcf/index.md
index 4656a10..0f02611 100644
--- a/content/tutorials/AutomatedJpgToXcf/index.md
+++ b/content/tutorials/AutomatedJpgToXcf/index.md
@@ -1,355 +1,355 @@
-Title: Automatic Creation of XCF from JPG
-Date: 2015-08-18T12:24:32-05:00
-Modified: 2015-08-18T12:24:36-05:00
-Author: Stephen Kiel
-
-<small>
-[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
-<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Automated Jpeg to XCF (text & images)</span> by
<a rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#">Stephen Kiel</a>
-is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US). The code sources in this tutorial are
licensed by Stephen Kiel under the conditions of the [GNU](http://www.gnu.org/) Public License GPL V3.
-</small>
-
-## Motivation
-
-<figure>
-<img src="{filename}gimp_jpg_to_xcf_popup.jpg" alt="gimp_jpg_to_xcf_popup.jpg" />
-</figure>
-
-While it is easy to do, opening a Jpeg file and saving it in the native GIMP \*.xcf format is tedious and
time consuming. You may also want to perform the same operation, like setting the grid spacing as an example,
on all of the images that you import as part of the process. Automating the parts of the editing process that
are the same for each image saves time, produces consistent results, and allows you to focus your attention
on the part of the image editing process that really needs your attention.
-
-This tutorial is a scripting example that is intended to illustrate automating part of the editing process.
The script opens all of the Jpeg images in the source directory, and saves them as xcf files in the target
directory. This is not a basic scripting tutorial, a basic understanding of writing GIMP scripts is assumed.
-
-## Requirements that are different than most scripts.
-
-1. The script needs to be available and run when there is no image open.
-2. The script has to be able to provide a GUI to identify the Source and Target directories, identify all
of jpg files in the source directory and convert them.
-3. The script needs to be aware of the type of operating system of the host machine, or more specifically
whether the filename separator is a "\" or a "/".
-4. The script has to be smart enough to not overwrite work in progress, (Xcf files with the same name in
the target directory).
-
-Let's look at the **first requirement**, to be able to run the script without an open image. We are working
on a group of several images not just one, and since we want to start our script from a know point, we don't
want to have an image open for edit, just the GIMP framework or application.
-
-The availability of a script from within the GIMP application is established and controlled within the
script-fu-register block. After the function name are an ordered set of strings of required information
followed by an optional number of GUI widget declarations that may feed selected information to the script.
The required strings are:
-
-1. _Function Name_ - Matches the name of the function in the opening 'define' statement.
-2. _Menu Label_ - The label identifying the function in the menus and the way to invoke the script.
-3. _Description_ - The description that will be displayed about the script in the Procedure Browser.
-4. _Author_ - Name of the Author
-5. _Copyright_ - Copyright information.
-6. _Creation Date_ - Date you wrote the script.
-7. _**Valid Image Type**_ - The type of image the script is permitted to work upon.
-
-The content of the _Valid Image Type_ is the way that we specify whether we can run the script without an
image open. You might be tempted to use an image type of "\*" to specify running all of the time, but that is
not quite what it does. The "Valid Image Type" is a way to restrict the script from running in an unintended
context, "\*" is the way to specify "any open image". What we want instead is an **empty string - ""** - to
specify running without an image open. The registration block for the script-fu version of the program would
look like (the Python registration block follows a similar pattern):
-
-#### Registration Block
-
- :::scheme
- ( script-fu-register "script-fu-example-jpg-to-xcf" ; Function Name
- "1 ) Import JPG to XCF (Directory)" ; Menu Label
- "This script is an interactive script to convert all of the jpegs
- in a source directory into GIMP xcf format files in a target
- directory. The script is designed to be run WITHOUT ANY IMAGE
- LOADED. Runs from GIMP shell in Linux and Windows."
- "Stephen Kiel" ; Author
- "2013, Stephen Kiel" ; Copyright
- "July 2013" ; Creation Date
- **"" ; Valid Image Type - No Image required**
- ; We actually don't want any images open when we run this
- ; script, so it must be available from the menu when an
- ; image is not loaded. This script will determine the IDs
- ; of the Image and Drawable itself rather than having them
- ; passed as parameters.
- ; Interactive widgets
- SF-DIRNAME "JPG Originals (source) Directory" ""
- SF-DIRNAME "XCF Working (target) Directory" ""
- ) ; End script-fu-register
- ( script-fu-menu-register
- "script-fu-example-jpg-to-xcf" "<Image>/Example-Scm")
-
-The image below shows menu items with and without an image loaded. The menu items numbered 1 & 2 have image
type = **""**. The items numbered 3 & 4 have image type = **"*"**.
-
-
-#### Function Menus
-
-<figure>
-<img src="{filename}gimp_menu_compare.jpg" alt="Menu Compare - Image types" />
-</figure>
-
-Our **second requirement**, to be able to use the GUI to browse to our Jpeg source file directory and our
Xcf target file directory is handled first in the registration block by using the "**SF-DIRNAME**" widgets to
label the GUI selection fields and pass the collected results as inputs to the script (above). Once we have
the path names to our source and target directories we will use the "**file-glob**" (os.listdir in python-fu)
function within the main program to create a list of all of the image files in those directories.
-
-We address the **third requirement** of determining the operating system type within the function itself. We
want the function to be portable, so it can run on either the Linux desktop unit you have in your home, or
the Windows laptop you carry out on the road. We need to know the OS type in order to determine the pathname
separator, either a "\" or "/" and deal with it in the script.
-
-Fortunately once we have the pathname to the source directory it is easy to determine which operating system
generated it by using the script-fu "**strbreakup**" function. We can compare the number of pieces by
breaking on the "/" and "\" character and use the result with the greater number of pieces to determine the
platform's operating system. If we are using the python-fu scripting language we can check the value of
os.name directly.
-
-
-#### Script-fu file-glob and strbreakup
-
- :::scheme
- ( isLinux ( >
- ( length ( strbreakup sourceDirectory "/" ) )
- ( length ( strbreakup sourceDirectory "\\" ) ) ) )
- ; Form path/file patternSource based on OS
- ( patternSource ( if isLinux
- ( string-append sourceDirectory "/*.[jJ][pP][gG]" )
- ( string-append sourceDirectory "\\*.[jJ][pP][gG]" ) ) )
- ( patternTarget ( if isLinux
- ( string-append targetDirectory "/*.[xX][cC][fF]" )
- ( string-append targetDirectory "\\*.[xX][cC][fF]" ) ) )
- ; List of files to be converted formatted for current Host
- ; O/S
- ( filelistSource ( cadr ( file-glob patternSource 1 ) ) )
- ( filelistExists ( cadr ( file-glob patternTarget 1 ) ) )
-
-Our **fourth requirement** to not overwrite existing \*.xcf files which may have ongoing work in progress is
solved by building a list of files in the target directory and checking that list for existence before
writing each new file.
-
-## Conclusion
-
-The working example script is pretty straightforward; building a list of file names, running through that
list in a loop, opening each source file and exporting it in turn. An equivalent python-fu version is
included as well. You should be able to use this example as a model to build similar functions, examples of
similar functions might be to convert a directory of xcf files to jpg files, to scale original jpg files to a
smaller size, etc.
-
-When using the GIMP widgets to Browse through the file system, you will probably need to select "Other" to
get to navigate where you really want. When using an automated script it is **ALWAYS** a good idea to run on
a **COPY** of your original images.
-
-## The Scripts
-
-The following scripts are the _script-fu_ and _python-fu_ versions of the Jpg to Xcf function discussed
above.
-
-* [script-fu-example-jpg-to-xcf.scm](script-fu-example-jpg-to-xcf.scm)
-* [example-jpeg-to-xcf.py](example-jpeg-to-xcf.py)
-
-### script-fu-example-jpg-to-xcf.scm
-
- :::scheme
- ; File = example-jpeg-to-xcf.py
- ;
- ; This program is free software: you can redistribute it and/or modify
- ; it under the terms of the GNU General Public License as published by
- ; the Free Software Foundation; either version 3 of the License, or
- ; (at your option) any later version.
- ;
- ; This program is distributed in the hope that it will be useful,
- ; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ; GNU General Public License for more details.
- ;
- ; You should have received a copy of the GNU General Public License
- ; along with this program. If not, see <http://www.gnu.org/licenses/>.
- ;
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- ;;; Function - script-fu-example-jpg-to-xcf
- ;;;
- ;;; Converts all jpeg images in selected directory to GIMP xcf
- ;;; format.
- ;;;
- ;;; Filename Case insensitive. (converts xyz.jpg or XYZ.JPG)
- ;;;
- ;;; Interactive program to be run WITHOUT AN IMAGE LOADED.
- ;;;
- ;;; Program prompts for a source (jpgs) and target (xcfs)
- ;;; directories.
- ;;;
- ;;; Program runs on either Linux or Windows Host O/S, using the
- ;;; appropriate path - filename separator ( "/" or "\").
- ;;;
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- ( define ( script-fu-example-jpg-to-xcf
- sourceDirectory targetDirectory )
- ( let*
- (
- ; Declare and Init local variables
- ( returnVal #f )
- ; Guess host OS based on directory path separator
- ( isLinux ( >
- ( length ( strbreakup sourceDirectory "/" ) )
- ( length ( strbreakup sourceDirectory "\\" ) ) ) )
- ; Form path/file patternSource based on OS
- ( patternSource ( if isLinux
- ( string-append sourceDirectory "/*.[jJ][pP][gG]" )
- ( string-append sourceDirectory "\\*.[jJ][pP][gG]" ) ) )
- ( patternTarget ( if isLinux
- ( string-append targetDirectory "/*.[xX][cC][fF]" )
- ( string-append targetDirectory "\\*.[xX][cC][fF]" ) ) )
- ; List of files to be converted formatted for current Host
- ; O/S
- ( filelistSource ( cadr ( file-glob patternSource 1 ) ) )
- ( filelistExists ( cadr ( file-glob patternTarget 1 ) ) )
- ( checkFileExists filelistExists )
- ; Place holders for image variables - updated per image
- ( theImage 0 )
- ( theDrawable 0 )
- ( currentFile "" )
- ( baseName "" )
- ( outFilename "" )
- ; Constants used to assign values to parasites on new image
- ( doIt #t )
- ( checkFile "" )
- ) ; End declaration of Local Variables
- ;
- ; Run if images closed, message if not.
- ( if ( < 0 ( car ( gimp-image-list ) ) )
- ( gimp-message "Close open Images & Rerun" )
- ( begin
- ;
- ; Run within scope of let* and local variables
- ; 'baseName' is filename without .jpg extension
- ; 'outFilename' is filename with .xcf extension
- ; Step through each file in list with while loop.
- ( while ( not ( null? filelistSource ) )
- ( set! doIt #t )
- ( set! checkFileExists filelistExists )
- ( set! currentFile ( car filelistSource ) )
- ; Get open and get Image ID of current file
- ( set! theImage
- ( car ( gimp-file-load RUN-NONINTERACTIVE
- currentFile currentFile ) ) )
- ( if isLinux
- ; Target path-filename if Host OS is Linux
- ( begin
- ( set! baseName ( car ( reverse
- ( strbreakup currentFile "/" ) ) ) )
- ( set! baseName ( car ( strbreakup baseName "." ) ) )
- ( set! outFilename ( string-append
- targetDirectory "/" baseName ".xcf" ) )
- ) ; End begin - Host OS is Linux
- ; Target path-filename if Host OS is Windows
- ( begin
- ( set! baseName ( car ( reverse
- ( strbreakup currentFile "\\" ) ) ) )
- ( set! baseName ( car ( strbreakup baseName "." ) ) )
- ( set! outFilename ( string-append
- targetDirectory "\\" baseName ".xcf" ) )
- ) ; End begin - if Host OS is Windows
- ) ; End if isLinux
- ; Check to see if outFilename exists so we don't overwrite
- ( while ( not ( null? checkFileExists ) )
- ( set! checkFile ( car checkFileExists ) )
- ( if ( string=? outFilename checkFile )
- ( set! doIt #f ) )
- (set! checkFileExists ( cdr checkFileExists ) )
- ) ; End while checkFileExists
- ( if doIt
- ( begin
- ; Get / set Drawable ID, need it for file save.
- ( set! theDrawable ( car
- ( gimp-image-merge-visible-layers theImage 0 ) ) )
- ; Save file - GIMP xcf format
- ( gimp-xcf-save
- RUN-NONINTERACTIVE theImage theDrawable
- outFilename outFilename )
- ) ; End begin
- ) ; End if doIt
- ( gimp-image-delete theImage )
- ; Update while loop iteration parameter
- (set! filelistSource ( cdr filelistSource ) )
- ) ; End while
- ); End outer begin
- ) ; End outer if
- ( set! returnVal #t )
- ) ; End let*
- ) ; End define
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
- ( script-fu-register "script-fu-example-jpg-to-xcf" ; Function Name
- "1 ) Import JPG to XCF (Directory)" ; Menu Label
- "This script is an interactive script to convert all of the jpegs
- in a source directory into GIMP xcf format files in a target
- directory. The script is designed to be run WITHOUT ANY IMAGE
- LOADED. Runs from GIMP shell in Linux and Windows."
- "Stephen Kiel" ; Author
- "2013, Stephen Kiel" ; Copyright
- "July 2013" ; Creation Date
- "" ; Valid Image Type - No Image required
- ; We actually don't want any images open when we run this
- ; script, so it must be available from the menu when an
- ; image is not loaded. This script will determine the IDs
- ; of the Image and Drawable itself rather than having them
- ; passed as parameters.
- ; Interactive widgets
- SF-DIRNAME "JPG Originals (source) Directory" ""
- SF-DIRNAME "XCF Working (target) Directory" ""
- ) ; End script-fu-register
- ( script-fu-menu-register
- "script-fu-example-jpg-to-xcf" "<Image>/Example-Scm")
- ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-
-### example-jpeg-to-xcf.py
-
- :::python
- #! /usr/bin/env python
- #
- # File = example-jpeg-to-xcf.py
- #
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- #
- ############################################################################
- #
- from gimpfu import *
- import os
- import re
- #
- def exampleJpgToXcf(srcPath, tgtPath):
- """Registered function exampleJpgToXcf, Converts all of the
- jpegs in the source directory into xcf files in a target
- directory. Requires two arguments, the paths to the source and
- target directories. DOES NOT require an image to be open.
- """
- ###
- open_images, image_ids = pdb.gimp_image_list()
- if open_images > 0:
- pdb.gimp_message ("Close open Images & Rerun")
- else:
- # list all of the files in source & target directories
- allFileList = os.listdir(srcPath)
- existingList = os.listdir(tgtPath)
- srcFileList = []
- tgtFileList = []
- xform = re.compile('\.jpg', re.IGNORECASE)
- # Find all of the jpeg files in the list & make xcf file names
- for fname in allFileList:
- fnameLow = fname.lower()
- if fnameLow.count('.jpg') > 0:
- srcFileList.append(fname)
- tgtFileList.append(xform.sub('.xcf',fname))
- # Dictionary - source & target file names
- tgtFileDict = dict(zip(srcFileList, tgtFileList))
- # Loop on jpegs, open each & save as xcf
- for srcFile in srcFileList:
- # Don't overwrite existing, might be work in Progress
- if tgtFileDict[srcFile] not in existingList:
- # os.path.join inserts the right kind of file separator
- tgtFile = os.path.join(tgtPath, tgtFileDict[srcFile])
- srcFile = os.path.join(srcPath, srcFile)
- theImage = pdb.file_jpeg_load(srcFile, srcFile)
- theDrawable = theImage.active_drawable
- pdb.gimp_xcf_save(0, theImage, theDrawable, tgtFile, tgtFile)
- pdb.gimp_image_delete(theImage)
- #
- ############################################################################
- #
- register (
- "exampleJpgToXcf", # Name registered in Procedure Browser
- "Convert jpg files to xcf", # Widget title
- "Convert jpg files to xcf", #
- "Stephen Kiel", # Author
- "Stephen Kiel", # Copyright Holder
- "July 2013", # Date
- "1) Import JPG to XCF (Directory)", # Menu Entry
- "", # Image Type - No image required
- [
- ( PF_DIRNAME, "srcPath", "JPG Originals (source) Directory:", "" ),
- ( PF_DIRNAME, "tgtPath", "XCF Working (target) Directory:", "" ),
- ],
- [],
- exampleJpgToXcf, # Matches to name of function being defined
- menu = "<Image>/Example-Py" # Menu Location
- ) # End register
-
- main()
-
+Title: Automatic Creation of XCF from JPG
+Date: 2015-08-18T12:24:32-05:00
+Modified: 2015-08-18T12:24:36-05:00
+Author: Stephen Kiel
+
+<small>
+[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
+<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Automated Jpeg to XCF (text & images)</span> by
<a rel="cc:attributionURL" xmlns:cc="http://creativecommons.org/ns#">Stephen Kiel</a>
+is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US). The code sources in this tutorial are
licensed by Stephen Kiel under the conditions of the [GNU](http://www.gnu.org/) Public License GPL V3.
+</small>
+
+## Motivation
+
+<figure>
+<img src="{filename}gimp_jpg_to_xcf_popup.jpg" alt="gimp_jpg_to_xcf_popup.jpg" />
+</figure>
+
+While it is easy to do, opening a Jpeg file and saving it in the native GIMP \*.xcf format is tedious and
time consuming. You may also want to perform the same operation, like setting the grid spacing as an example,
on all of the images that you import as part of the process. Automating the parts of the editing process that
are the same for each image saves time, produces consistent results, and allows you to focus your attention
on the part of the image editing process that really needs your attention.
+
+This tutorial is a scripting example that is intended to illustrate automating part of the editing process.
The script opens all of the Jpeg images in the source directory, and saves them as xcf files in the target
directory. This is not a basic scripting tutorial, a basic understanding of writing GIMP scripts is assumed.
+
+## Requirements that are different than most scripts.
+
+1. The script needs to be available and run when there is no image open.
+2. The script has to be able to provide a GUI to identify the Source and Target directories, identify all
of jpg files in the source directory and convert them.
+3. The script needs to be aware of the type of operating system of the host machine, or more specifically
whether the filename separator is a "\" or a "/".
+4. The script has to be smart enough to not overwrite work in progress, (Xcf files with the same name in
the target directory).
+
+Let's look at the **first requirement**, to be able to run the script without an open image. We are working
on a group of several images not just one, and since we want to start our script from a know point, we don't
want to have an image open for edit, just the GIMP framework or application.
+
+The availability of a script from within the GIMP application is established and controlled within the
script-fu-register block. After the function name are an ordered set of strings of required information
followed by an optional number of GUI widget declarations that may feed selected information to the script.
The required strings are:
+
+1. _Function Name_ - Matches the name of the function in the opening 'define' statement.
+2. _Menu Label_ - The label identifying the function in the menus and the way to invoke the script.
+3. _Description_ - The description that will be displayed about the script in the Procedure Browser.
+4. _Author_ - Name of the Author
+5. _Copyright_ - Copyright information.
+6. _Creation Date_ - Date you wrote the script.
+7. _**Valid Image Type**_ - The type of image the script is permitted to work upon.
+
+The content of the _Valid Image Type_ is the way that we specify whether we can run the script without an
image open. You might be tempted to use an image type of "\*" to specify running all of the time, but that is
not quite what it does. The "Valid Image Type" is a way to restrict the script from running in an unintended
context, "\*" is the way to specify "any open image". What we want instead is an **empty string - ""** - to
specify running without an image open. The registration block for the script-fu version of the program would
look like (the Python registration block follows a similar pattern):
+
+#### Registration Block
+
+ :::scheme
+ ( script-fu-register "script-fu-example-jpg-to-xcf" ; Function Name
+ "1 ) Import JPG to XCF (Directory)" ; Menu Label
+ "This script is an interactive script to convert all of the jpegs
+ in a source directory into GIMP xcf format files in a target
+ directory. The script is designed to be run WITHOUT ANY IMAGE
+ LOADED. Runs from GIMP shell in Linux and Windows."
+ "Stephen Kiel" ; Author
+ "2013, Stephen Kiel" ; Copyright
+ "July 2013" ; Creation Date
+ **"" ; Valid Image Type - No Image required**
+ ; We actually don't want any images open when we run this
+ ; script, so it must be available from the menu when an
+ ; image is not loaded. This script will determine the IDs
+ ; of the Image and Drawable itself rather than having them
+ ; passed as parameters.
+ ; Interactive widgets
+ SF-DIRNAME "JPG Originals (source) Directory" ""
+ SF-DIRNAME "XCF Working (target) Directory" ""
+ ) ; End script-fu-register
+ ( script-fu-menu-register
+ "script-fu-example-jpg-to-xcf" "<Image>/Example-Scm")
+
+The image below shows menu items with and without an image loaded. The menu items numbered 1 & 2 have image
type = **""**. The items numbered 3 & 4 have image type = **"*"**.
+
+
+#### Function Menus
+
+<figure>
+<img src="{filename}gimp_menu_compare.jpg" alt="Menu Compare - Image types" />
+</figure>
+
+Our **second requirement**, to be able to use the GUI to browse to our Jpeg source file directory and our
Xcf target file directory is handled first in the registration block by using the "**SF-DIRNAME**" widgets to
label the GUI selection fields and pass the collected results as inputs to the script (above). Once we have
the path names to our source and target directories we will use the "**file-glob**" (os.listdir in python-fu)
function within the main program to create a list of all of the image files in those directories.
+
+We address the **third requirement** of determining the operating system type within the function itself. We
want the function to be portable, so it can run on either the Linux desktop unit you have in your home, or
the Windows laptop you carry out on the road. We need to know the OS type in order to determine the pathname
separator, either a "\" or "/" and deal with it in the script.
+
+Fortunately once we have the pathname to the source directory it is easy to determine which operating system
generated it by using the script-fu "**strbreakup**" function. We can compare the number of pieces by
breaking on the "/" and "\" character and use the result with the greater number of pieces to determine the
platform's operating system. If we are using the python-fu scripting language we can check the value of
os.name directly.
+
+
+#### Script-fu file-glob and strbreakup
+
+ :::scheme
+ ( isLinux ( >
+ ( length ( strbreakup sourceDirectory "/" ) )
+ ( length ( strbreakup sourceDirectory "\\" ) ) ) )
+ ; Form path/file patternSource based on OS
+ ( patternSource ( if isLinux
+ ( string-append sourceDirectory "/*.[jJ][pP][gG]" )
+ ( string-append sourceDirectory "\\*.[jJ][pP][gG]" ) ) )
+ ( patternTarget ( if isLinux
+ ( string-append targetDirectory "/*.[xX][cC][fF]" )
+ ( string-append targetDirectory "\\*.[xX][cC][fF]" ) ) )
+ ; List of files to be converted formatted for current Host
+ ; O/S
+ ( filelistSource ( cadr ( file-glob patternSource 1 ) ) )
+ ( filelistExists ( cadr ( file-glob patternTarget 1 ) ) )
+
+Our **fourth requirement** to not overwrite existing \*.xcf files which may have ongoing work in progress is
solved by building a list of files in the target directory and checking that list for existence before
writing each new file.
+
+## Conclusion
+
+The working example script is pretty straightforward; building a list of file names, running through that
list in a loop, opening each source file and exporting it in turn. An equivalent python-fu version is
included as well. You should be able to use this example as a model to build similar functions, examples of
similar functions might be to convert a directory of xcf files to jpg files, to scale original jpg files to a
smaller size, etc.
+
+When using the GIMP widgets to Browse through the file system, you will probably need to select "Other" to
get to navigate where you really want. When using an automated script it is **ALWAYS** a good idea to run on
a **COPY** of your original images.
+
+## The Scripts
+
+The following scripts are the _script-fu_ and _python-fu_ versions of the Jpg to Xcf function discussed
above.
+
+* [script-fu-example-jpg-to-xcf.scm](script-fu-example-jpg-to-xcf.scm)
+* [example-jpeg-to-xcf.py](example-jpeg-to-xcf.py)
+
+### script-fu-example-jpg-to-xcf.scm
+
+ :::scheme
+ ; File = example-jpeg-to-xcf.py
+ ;
+ ; This program is free software: you can redistribute it and/or modify
+ ; it under the terms of the GNU General Public License as published by
+ ; the Free Software Foundation; either version 3 of the License, or
+ ; (at your option) any later version.
+ ;
+ ; This program is distributed in the hope that it will be useful,
+ ; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ; GNU General Public License for more details.
+ ;
+ ; You should have received a copy of the GNU General Public License
+ ; along with this program. If not, see <http://www.gnu.org/licenses/>.
+ ;
+ ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ ;;; Function - script-fu-example-jpg-to-xcf
+ ;;;
+ ;;; Converts all jpeg images in selected directory to GIMP xcf
+ ;;; format.
+ ;;;
+ ;;; Filename Case insensitive. (converts xyz.jpg or XYZ.JPG)
+ ;;;
+ ;;; Interactive program to be run WITHOUT AN IMAGE LOADED.
+ ;;;
+ ;;; Program prompts for a source (jpgs) and target (xcfs)
+ ;;; directories.
+ ;;;
+ ;;; Program runs on either Linux or Windows Host O/S, using the
+ ;;; appropriate path - filename separator ( "/" or "\").
+ ;;;
+ ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ ( define ( script-fu-example-jpg-to-xcf
+ sourceDirectory targetDirectory )
+ ( let*
+ (
+ ; Declare and Init local variables
+ ( returnVal #f )
+ ; Guess host OS based on directory path separator
+ ( isLinux ( >
+ ( length ( strbreakup sourceDirectory "/" ) )
+ ( length ( strbreakup sourceDirectory "\\" ) ) ) )
+ ; Form path/file patternSource based on OS
+ ( patternSource ( if isLinux
+ ( string-append sourceDirectory "/*.[jJ][pP][gG]" )
+ ( string-append sourceDirectory "\\*.[jJ][pP][gG]" ) ) )
+ ( patternTarget ( if isLinux
+ ( string-append targetDirectory "/*.[xX][cC][fF]" )
+ ( string-append targetDirectory "\\*.[xX][cC][fF]" ) ) )
+ ; List of files to be converted formatted for current Host
+ ; O/S
+ ( filelistSource ( cadr ( file-glob patternSource 1 ) ) )
+ ( filelistExists ( cadr ( file-glob patternTarget 1 ) ) )
+ ( checkFileExists filelistExists )
+ ; Place holders for image variables - updated per image
+ ( theImage 0 )
+ ( theDrawable 0 )
+ ( currentFile "" )
+ ( baseName "" )
+ ( outFilename "" )
+ ; Constants used to assign values to parasites on new image
+ ( doIt #t )
+ ( checkFile "" )
+ ) ; End declaration of Local Variables
+ ;
+ ; Run if images closed, message if not.
+ ( if ( < 0 ( car ( gimp-image-list ) ) )
+ ( gimp-message "Close open Images & Rerun" )
+ ( begin
+ ;
+ ; Run within scope of let* and local variables
+ ; 'baseName' is filename without .jpg extension
+ ; 'outFilename' is filename with .xcf extension
+ ; Step through each file in list with while loop.
+ ( while ( not ( null? filelistSource ) )
+ ( set! doIt #t )
+ ( set! checkFileExists filelistExists )
+ ( set! currentFile ( car filelistSource ) )
+ ; Get open and get Image ID of current file
+ ( set! theImage
+ ( car ( gimp-file-load RUN-NONINTERACTIVE
+ currentFile currentFile ) ) )
+ ( if isLinux
+ ; Target path-filename if Host OS is Linux
+ ( begin
+ ( set! baseName ( car ( reverse
+ ( strbreakup currentFile "/" ) ) ) )
+ ( set! baseName ( car ( strbreakup baseName "." ) ) )
+ ( set! outFilename ( string-append
+ targetDirectory "/" baseName ".xcf" ) )
+ ) ; End begin - Host OS is Linux
+ ; Target path-filename if Host OS is Windows
+ ( begin
+ ( set! baseName ( car ( reverse
+ ( strbreakup currentFile "\\" ) ) ) )
+ ( set! baseName ( car ( strbreakup baseName "." ) ) )
+ ( set! outFilename ( string-append
+ targetDirectory "\\" baseName ".xcf" ) )
+ ) ; End begin - if Host OS is Windows
+ ) ; End if isLinux
+ ; Check to see if outFilename exists so we don't overwrite
+ ( while ( not ( null? checkFileExists ) )
+ ( set! checkFile ( car checkFileExists ) )
+ ( if ( string=? outFilename checkFile )
+ ( set! doIt #f ) )
+ (set! checkFileExists ( cdr checkFileExists ) )
+ ) ; End while checkFileExists
+ ( if doIt
+ ( begin
+ ; Get / set Drawable ID, need it for file save.
+ ( set! theDrawable ( car
+ ( gimp-image-merge-visible-layers theImage 0 ) ) )
+ ; Save file - GIMP xcf format
+ ( gimp-xcf-save
+ RUN-NONINTERACTIVE theImage theDrawable
+ outFilename outFilename )
+ ) ; End begin
+ ) ; End if doIt
+ ( gimp-image-delete theImage )
+ ; Update while loop iteration parameter
+ (set! filelistSource ( cdr filelistSource ) )
+ ) ; End while
+ ); End outer begin
+ ) ; End outer if
+ ( set! returnVal #t )
+ ) ; End let*
+ ) ; End define
+ ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ ( script-fu-register "script-fu-example-jpg-to-xcf" ; Function Name
+ "1 ) Import JPG to XCF (Directory)" ; Menu Label
+ "This script is an interactive script to convert all of the jpegs
+ in a source directory into GIMP xcf format files in a target
+ directory. The script is designed to be run WITHOUT ANY IMAGE
+ LOADED. Runs from GIMP shell in Linux and Windows."
+ "Stephen Kiel" ; Author
+ "2013, Stephen Kiel" ; Copyright
+ "July 2013" ; Creation Date
+ "" ; Valid Image Type - No Image required
+ ; We actually don't want any images open when we run this
+ ; script, so it must be available from the menu when an
+ ; image is not loaded. This script will determine the IDs
+ ; of the Image and Drawable itself rather than having them
+ ; passed as parameters.
+ ; Interactive widgets
+ SF-DIRNAME "JPG Originals (source) Directory" ""
+ SF-DIRNAME "XCF Working (target) Directory" ""
+ ) ; End script-fu-register
+ ( script-fu-menu-register
+ "script-fu-example-jpg-to-xcf" "<Image>/Example-Scm")
+ ;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+### example-jpeg-to-xcf.py
+
+ :::python
+ #! /usr/bin/env python
+ #
+ # File = example-jpeg-to-xcf.py
+ #
+ # This program is free software: you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3 of the License, or
+ # (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
+ #
+ ############################################################################
+ #
+ from gimpfu import *
+ import os
+ import re
+ #
+ def exampleJpgToXcf(srcPath, tgtPath):
+ """Registered function exampleJpgToXcf, Converts all of the
+ jpegs in the source directory into xcf files in a target
+ directory. Requires two arguments, the paths to the source and
+ target directories. DOES NOT require an image to be open.
+ """
+ ###
+ open_images, image_ids = pdb.gimp_image_list()
+ if open_images > 0:
+ pdb.gimp_message ("Close open Images & Rerun")
+ else:
+ # list all of the files in source & target directories
+ allFileList = os.listdir(srcPath)
+ existingList = os.listdir(tgtPath)
+ srcFileList = []
+ tgtFileList = []
+ xform = re.compile('\.jpg', re.IGNORECASE)
+ # Find all of the jpeg files in the list & make xcf file names
+ for fname in allFileList:
+ fnameLow = fname.lower()
+ if fnameLow.count('.jpg') > 0:
+ srcFileList.append(fname)
+ tgtFileList.append(xform.sub('.xcf',fname))
+ # Dictionary - source & target file names
+ tgtFileDict = dict(zip(srcFileList, tgtFileList))
+ # Loop on jpegs, open each & save as xcf
+ for srcFile in srcFileList:
+ # Don't overwrite existing, might be work in Progress
+ if tgtFileDict[srcFile] not in existingList:
+ # os.path.join inserts the right kind of file separator
+ tgtFile = os.path.join(tgtPath, tgtFileDict[srcFile])
+ srcFile = os.path.join(srcPath, srcFile)
+ theImage = pdb.file_jpeg_load(srcFile, srcFile)
+ theDrawable = theImage.active_drawable
+ pdb.gimp_xcf_save(0, theImage, theDrawable, tgtFile, tgtFile)
+ pdb.gimp_image_delete(theImage)
+ #
+ ############################################################################
+ #
+ register (
+ "exampleJpgToXcf", # Name registered in Procedure Browser
+ "Convert jpg files to xcf", # Widget title
+ "Convert jpg files to xcf", #
+ "Stephen Kiel", # Author
+ "Stephen Kiel", # Copyright Holder
+ "July 2013", # Date
+ "1) Import JPG to XCF (Directory)", # Menu Entry
+ "", # Image Type - No image required
+ [
+ ( PF_DIRNAME, "srcPath", "JPG Originals (source) Directory:", "" ),
+ ( PF_DIRNAME, "tgtPath", "XCF Working (target) Directory:", "" ),
+ ],
+ [],
+ exampleJpgToXcf, # Matches to name of function being defined
+ menu = "<Image>/Example-Py" # Menu Location
+ ) # End register
+
+ main()
+
diff --git a/content/tutorials/Basic_Batch/index.md b/content/tutorials/Basic_Batch/index.md
index f21b08c..ffae3b5 100644
--- a/content/tutorials/Basic_Batch/index.md
+++ b/content/tutorials/Basic_Batch/index.md
@@ -1,89 +1,89 @@
-Title: GIMP Batch Mode
-Date: 2015-08-18T12:24:32-05:00
-Modified: 2015-08-18T12:24:36-05:00
-Author: Pat David
-
-
-## Introduction
-
-GIMP comes with a so-called batch mode that allows you to do image processing from the command line. It also
makes it easy to apply the same set of operations to a number of images. We have got a lot of questions on
the mailing-lists on how to use the batch mode and this small page tries to explain the basics to you.
-
-GIMP can be started with a number of command-line options. Let's have a closer look at the output of `gimp
--help`:
-
- :::bash
- GIMP version 2.4.1
-
- Usage: gimp [option ... ] [file ... ]
-
- Options:
- -?, --help Show help options
- -v, --version Show version information and exit
- --verbose Be more verbose
- -d, --no-data Do not load brushes, gradients, palettes, patterns, ...
- -f, --no-fonts Do not load any fonts
- -i, --no-interface Run without a user interface
- --batch-interpreter=<procedure>
- The procedure to process batch commands with
- -b, --batch=<commands> Batch command to run (can be used multiple times)
- ...
-
-In order to do image processing from the command-line, you usually use the Script-Fu batch interpreter. This
is the default, which makes things simple. To give you an impression of what can be done, try the interactive
console mode:
-
- gimp -b -
-
-This will tell GIMP to start in batch mode and accept commands on the command-line. This is essentially the
same as using the Script-Fu console. It would however be tedious to enter the commands here, so instead we
will create a simple script and show you how to run that:
-
-
-## A simple example
-
- (define (simple-unsharp-mask filename
- radius
- amount
- threshold)
- (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
- (drawable (car (gimp-image-get-active-layer image))))
- (plug-in-unsharp-mask RUN-NONINTERACTIVE
- image drawable radius amount threshold)
- (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
- (gimp-image-delete image)))
-
-This simple script takes a filename and some numeric parameters. It opens the respective file, applies the
Unsharp Mask filter and saves the image again (be careful, for the sake of simplicity this script overwrites
the original image). It does all this w/o any user interaction, so we can run it without any user interface.
In order to do that, save the script with the .scm extension in the **~/.gimp-2.4/scripts** directory. Then
run it like this:
-
- gimp -i -b '(simple-unsharp-mask "foo.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
-
-
-There is a catch here: Some plugins or Script-Fu scripts create new layers and then flatten the image again.
This changes the drawable ID. If this is the case insert the following line to get the current drawable ID
just before saving the image:
-
- (set! drawable (car (gimp-image-get-active-layer image)))
-
-
-
-## Processing several files
-
-You might want to apply an effect to a number of files, typically to a set of files in the same directory.
GIMP 2.2 added a very useful function for this purpose, the **file-glob** plug-in. This turns GIMP into a
versatile batch processor. In order to use it, we will need to do some modifications to our script:
-
- (define (batch-unsharp-mask pattern
- radius
- amount
- threshold)
- (let* ((filelist (cadr (file-glob pattern 1))))
- (while (not (null? filelist))
- (let* ((filename (car filelist))
- (image (car (gimp-file-load RUN-NONINTERACTIVE
- filename filename)))
- (drawable (car (gimp-image-get-active-layer image))))
- (plug-in-unsharp-mask RUN-NONINTERACTIVE
- image drawable radius amount threshold)
- (gimp-file-save RUN-NONINTERACTIVE
- image drawable filename filename)
- (gimp-image-delete image))
- (set! filelist (cdr filelist)))))
-
-This version of the script takes a glob pattern instead of a filename and will apply the Unsharp Mask filter
to all files matching this pattern. In order to sharpen all PNG images in the current directory, you would
run the following command:
-
- gimp -i -b '(batch-unsharp-mask "*.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
-
-## Further information
-
-If you want to write your own scripts for batch processing, we suggest you use the **Procedure Browser** as
found in the **Help** menu. It gives you a detailed list of all commands.
-
+Title: GIMP Batch Mode
+Date: 2015-08-18T12:24:32-05:00
+Modified: 2015-08-18T12:24:36-05:00
+Author: Pat David
+
+
+## Introduction
+
+GIMP comes with a so-called batch mode that allows you to do image processing from the command line. It also
makes it easy to apply the same set of operations to a number of images. We have got a lot of questions on
the mailing-lists on how to use the batch mode and this small page tries to explain the basics to you.
+
+GIMP can be started with a number of command-line options. Let's have a closer look at the output of `gimp
--help`:
+
+ :::bash
+ GIMP version 2.4.1
+
+ Usage: gimp [option ... ] [file ... ]
+
+ Options:
+ -?, --help Show help options
+ -v, --version Show version information and exit
+ --verbose Be more verbose
+ -d, --no-data Do not load brushes, gradients, palettes, patterns, ...
+ -f, --no-fonts Do not load any fonts
+ -i, --no-interface Run without a user interface
+ --batch-interpreter=<procedure>
+ The procedure to process batch commands with
+ -b, --batch=<commands> Batch command to run (can be used multiple times)
+ ...
+
+In order to do image processing from the command-line, you usually use the Script-Fu batch interpreter. This
is the default, which makes things simple. To give you an impression of what can be done, try the interactive
console mode:
+
+ gimp -b -
+
+This will tell GIMP to start in batch mode and accept commands on the command-line. This is essentially the
same as using the Script-Fu console. It would however be tedious to enter the commands here, so instead we
will create a simple script and show you how to run that:
+
+
+## A simple example
+
+ (define (simple-unsharp-mask filename
+ radius
+ amount
+ threshold)
+ (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
+ (drawable (car (gimp-image-get-active-layer image))))
+ (plug-in-unsharp-mask RUN-NONINTERACTIVE
+ image drawable radius amount threshold)
+ (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
+ (gimp-image-delete image)))
+
+This simple script takes a filename and some numeric parameters. It opens the respective file, applies the
Unsharp Mask filter and saves the image again (be careful, for the sake of simplicity this script overwrites
the original image). It does all this w/o any user interaction, so we can run it without any user interface.
In order to do that, save the script with the .scm extension in the **~/.gimp-2.4/scripts** directory. Then
run it like this:
+
+ gimp -i -b '(simple-unsharp-mask "foo.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
+
+
+There is a catch here: Some plugins or Script-Fu scripts create new layers and then flatten the image again.
This changes the drawable ID. If this is the case insert the following line to get the current drawable ID
just before saving the image:
+
+ (set! drawable (car (gimp-image-get-active-layer image)))
+
+
+
+## Processing several files
+
+You might want to apply an effect to a number of files, typically to a set of files in the same directory.
GIMP 2.2 added a very useful function for this purpose, the **file-glob** plug-in. This turns GIMP into a
versatile batch processor. In order to use it, we will need to do some modifications to our script:
+
+ (define (batch-unsharp-mask pattern
+ radius
+ amount
+ threshold)
+ (let* ((filelist (cadr (file-glob pattern 1))))
+ (while (not (null? filelist))
+ (let* ((filename (car filelist))
+ (image (car (gimp-file-load RUN-NONINTERACTIVE
+ filename filename)))
+ (drawable (car (gimp-image-get-active-layer image))))
+ (plug-in-unsharp-mask RUN-NONINTERACTIVE
+ image drawable radius amount threshold)
+ (gimp-file-save RUN-NONINTERACTIVE
+ image drawable filename filename)
+ (gimp-image-delete image))
+ (set! filelist (cdr filelist)))))
+
+This version of the script takes a glob pattern instead of a filename and will apply the Unsharp Mask filter
to all files matching this pattern. In order to sharpen all PNG images in the current directory, you would
run the following command:
+
+ gimp -i -b '(batch-unsharp-mask "*.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
+
+## Further information
+
+If you want to write your own scripts for batch processing, we suggest you use the **Procedure Browser** as
found in the **Help** menu. It gives you a detailed list of all commands.
+
diff --git a/content/tutorials/Basic_Color_Curves/index.md b/content/tutorials/Basic_Color_Curves/index.md
index 9bcfa67..f49ec18 100644
--- a/content/tutorials/Basic_Color_Curves/index.md
+++ b/content/tutorials/Basic_Color_Curves/index.md
@@ -1,403 +1,403 @@
-Title: Basic Color Curves
-Date: 2015-08-18T13:18:54-05:00
-Modified: 2015-08-18T13:19:00-05:00
-Author: Pat David
-
-<noscript>
-<style>
-.comp {
- width: 450px;
-}
-</style>
-</noscript>
-
-<small>
-[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
-<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Basic Color Curves (text & images)</span> by
[Pat David](http://blog.patdavid.net) is licensed under a [Creative Commons Attribution-ShareAlike 3.0
Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US) (except _Hollow Moon_ by
_qsimple/Eric_ on [Flickr](https://www.flickr.com/people/qsimple/)).
-</small>
-
-Color has this amazing ability to evoke emotional responses from us. From the warm glow of a sunny summer
afternoon to a cool refreshing early evening in fall. We associate colors with certain moods, places,
feelings, and memories (consciously or not).
-
-Volumes have been written on color and I am in no ways even remotely qualified to speak on it. So I won’t.
-
-Instead, we are going to take a look at the use of the **Curves** tool in [GIMP](//www.gimp.org). Even
though GIMP is used to demonstrate these ideas, the principles are generic to just about any RGB curve
adjustments.
-
-## Your Pixels and You[](#your-pixels-and-you)
-
-First there’s something you need to consider if you haven’t before, and that’s what goes into representing a
colored pixel on your screen.
-
-<figure>
-<img src="{filename}curves-house-square-full.jpg" alt="PIXLS.US House Zoom Example" />
-<figcaption>
-Open up an image in GIMP.
-</figcaption>
-</figure>
-
-
-<figure>
-<img src="{filename}curves-house-square-zoom-1.jpg" alt="PIXLS.US House Zoom Example" />
-<figcaption>
-Now zoom in.
-</figcaption>
-</figure>
-
-<figure>
-<img src="{filename}curves-house-square-zoom-2.jpg" alt="PIXLS.US House Zoom Example" />
-<figcaption>
-Nope - don’t be shy now, zoom in more!
-</figcaption>
-</figure>
-
-<figure>
-<img src="{filename}curves-house-square-zoom-3.png" alt="PIXLS.US House Zoom Example" />
-<figcaption>
-Aaand there’s your pixel. So let’s investigate what goes into making your pixel.
-</figcaption>
-</figure>
-
-
-Remember, each pixel is represented by a combination of 3 colors: **Red**, **Green**, and **Blue**. In GIMP
(currently at 8-bit), that means that each RGB color can have a value from **0 - 255**, and combining these
three colors with varying levels in each channel will result in all the colors you can see in your image.
-
-If all three channels have a value of 255 - then the resulting color will be pure white. If all three
channels have a value of 0 - then the resulting color will be pure black.
-
-If all three channels have the same value, then you will get a shade of gray (128,128,128 would be a middle
gray color for instance).
-
-So now let’s see what goes into making up your pixel:
-
-<figure>
-<img src="{filename}curves-your-pixel-info.png" alt="GIMP Color Picker Pixel View" >
-<figcaption>
-The RGB components that mix into your final <span style="color: #7ba3ce;">blue pixel</span>.
-</figcaption>
-</figure>
-
-As you can see, there is more blue than anything else (it is a blue-ish pixel after all), followed by green,
then a dash of red. If we were to change the values of each channel, but kept ratio the same between Red,
Green, and Blue, then we would keep the same color and just lighten or darken the pixel by some amount.
-
-## Curves: Value[](#curves-value)
-
-So let’s leave your pixel alone for the time being, and actually have a look at the **Curves** dialog. I’ll
be using this wonderful image by [Eric](http://www.flickr.com/photos/qsimple/) from
[Flickr](http://www.flickr.com).
-
-<figure markdown="span">
-<img src="{filename}flickr-qsimple-5636649561-original.jpg" alt="Hollow Moon by Eric qsimple Flickr" >
-<figcaption>
-[Hollow Moon](http://www.flickr.com/photos/qsimple/5636649561/) by
[qsimple/Eric](http://www.flickr.com/photos/qsimple/) on [Flickr](http://www.flickr.com).
([cc-by-nc-sa](http://creativecommons.org/licenses/by-nc-sa/2.0/))
-</figcaption>
-</figure>
-
-Opening up my **Curves** dialog shows me the following:
-
-<div class="MenuCmd"><span>Colors → Curves…</span></div>
-
-<figure>
-<img src="{filename}curves-dialog-original.png" alt="GIMP Base Curves Dialog" />
-</figure>
-
-We can see that I start off with the curve for the **Value** of the pixels. I could also use the drop down
for **“Channel”** to change to red, green or blue curves if I wanted to. For now let’s look at **Value**,
though.
-
-In the main area of the dialog I am presented with a linear curve, behind which I will see a histogram of
the value data for the entire image (showing the amount of each value across my image). Notice a spike in the
high values on the right, and a small gap at the brightest values.
-
-<figure>
-<img src="{filename}curves-dialog-original-IO.png" alt="GIMP Base Curves Dialog Input Output" />
-</figure>
-
-What we can do right now is to adjust the values of each pixel in the image using this curve. The best way
to visualize it is to remember that the bottom range from black to white represents the <span style="color:
#0000ff">**_current_** value of the pixels</span>, and the left range is the <span style="color:
#ff6f00">value to be mapped to</span>.
-
-So to show an example of how this curve will affect your image, suppose I wanted to remap all the values in
the image that were in the midtones, and to make them all lighter. I can do this by clicking on the curve
near the midtones, and dragging the curve higher in the Y direction:
-
-<figure>
-<img src="{filename}curves-dialog-midtones.png" alt="GIMP Base Curves Dialog Push Midtones" />
-</figure>
-
-What this curve does is takes the values around the midtones, and pushes their values to be much lighter
than they were. In this case, values around <span style="color: #0000ff">128</span> were re-mapped to now be
closer to <span style="color: #ff6f00">192</span>.
-
-Because the curve is set **Smooth**, there will be a gradual transition for all the tones surrounding my
point to be pulled in the same direction (this makes for a smoother fall-off as opposed to an abrupt change
at one value). Because there is only a single point in the curve right now, this means that all values will
be pulled higher.
-
-<figure>
-<noscript><img alt="Hollow Moon Example" class="comp" src="{FILENAME}flickr-qsimple-5636649561-original.jpg"
/></noscript>
-<img class="comp" alt="Hollow Moon Example Pushed Midtones"
data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
src="{filename}flickr-qsimple-5636649561-mid-boostl.jpg" />
-<figcaption>
-The results of pushing the midtones of the value curve higher<br/>
-(click to compare to original).
-<noscript><br /> (Original on left)</noscript>
-</figcaption>
-</figure>
-
-Care should be taken when fiddling with these curves to not blow things out or destroy detail, of course. I
only push the curves here to illustrate what they do.
-
-A very common curve adjustment you may hear about is to apply a slight “S” curve to your values. The effect
of this curve would be to darken the dark tones, and to lighten the light tones - in effect increasing global
contrast on your image. For instance, if I click on another point in the curves, and adjust the points to
form a shape like so:
-
-<figure>
-<img src="{filename}curves-dialog-slight-s.png" alt="GIMP Base Curves Dialog S shaped curve" >
-<figcaption>
-A slight “S” curve
-</figcaption>
-</figure>
-
-This will now cause dark values to become even darker, while the light values get a small boost. The curve
still passes through the midpoint, so middle tones will stay closer to what they were.
-
-<figure>
-<noscript><img class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg" alt="Hollow Moon Example"
/></noscript>
-<img alt="Hollow Moon Example S curve applied"
data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg" class="comp"
src="{filename}flickr-qsimple-5636649561-slight-s.jpg" />
-<figcaption>Slight “S” curve increases global contrast (click for original).
-<noscript><br /> (Original on left)</noscript>
-</figcaption>
-</figure>
-
-In general, I find it easiest to visualize in terms of which regions in the curve will effect different
tones in your image. Here is a quick way to visualize it (that is true for value as well as RGB curves):
-
-<figure>
-<img src="{filename}curves-dialog-darksmidslights.png" alt="GIMP Base Curves darks mids lights zones" />
-</figure>
-
-If there is one thing you take away from reading this, let it be the image above.
-
-## Curves: <span style="color:red;">Co</span><span style="color:green;">lo</span><span
style="color:blue;">rs</span>[](#curves-span-style-color-red-co-span-span-style-color-green-lo-span-span-style-color-blue-rs-span-)
-
-So how does this apply to other channels? Let’s have a look.
-
-The exact same theory applies in the RGB channels as it did with values. The relative positions of the
darks, midtones, and lights are still the same in the curve dialog. The primary difference now is that you
can control the contribution of color in specific tonal regions of your image.
-
-<figure>
-<img src="{filename}curves-dialog-value-rgb-select.png" alt="RGB Select" >
-<figcaption>
-Value, Red, Green, Blue channel picker.
-</figcaption>
-</figure>
-
-You choose which channel you want to adjust from the **“Channel”** drop-down.
-
-To begin demonstrating what happens here it helps to have an idea of generally what effect you would like to
apply to your image. This is often the hardest part of adjusting the color tones if you don’t have a clear
idea to start with.
-
-For example, perhaps we wanted to “cool” down the shadows of our image. “Cool” shadows are commonly seen
during the day in shadows out of direct sunlight. The light that does fall in shadows is mostly reflected
light from a blue-ish sky, so the shadows will trend slightly more blue.
-
-To try this, let’s adjust the **Blue** channel to be a little more prominent in the darker tones of our
image, but to get back to normal around the midtones and lighter.
-
-<figure>
-<img src="{filename}curves-dialog-darks-blue-boost.png" alt="Darks Blue Boost" >
-<figcaption>
-Boosting blues in darker tones
-</figcaption>
-</figure>
-
-<figure>
-<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
-<img alt="Dark Blue Boost" class="comp" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
src="{filename}flickr-qsimple-5636649561-dark-blue-boost.jpg" />
-<figcaption>Pushing up blues in darker tones (click for original).
-<noscript><br /> (Original on left)</noscript>
-</figcaption>
-</figure>
-
-Now, here’s a question: If I wanted to “cool” the darker tones with more blue, what if I wanted to “warm”
the lighter tones by adding a little yellow?
-
-Well, there’s no “Yellow” curve to modify, so how to approach that? Have a look at this HSV color wheel
below:
-
-<figure>
-<img src="{filename}Color_circle.png" alt="Color Circle Hue" />
-</figure>
-
-The thing to look out for here is that opposite your blue tones on this wheel, you’ll find yellow. In fact,
for each of the Red, Green, and Blue channels, the opposite colors on the color wheel will show you what an
absence of that color will do to your image. So remember:
-
-<div style="text-align: center;"><span style="color: red;">Red</span> → <span style="color:
cyan;">Cyan</span></span><br/><span><span style="color: green;">Green</span> → <span style="color:
magenta;">Magenta</span></span><br/><span><span style="color: blue;">Blue</span> → <span style="color:
yellow;">Yellow</span></div>
-
-What this means to you while manipulating curves is that if you drag a curve for blue up, you will boost the
blue in that region of your image. If instead you drag the curve for blue down, you will be **_removing_**
blues (or boosting the **Yellows** in that region of your image).
-
-So to boost the blues in the dark tones, but increase the yellow in the lighter tones, you could create a
sort of “reverse” S-curve in the blue channel:
-
-<figure>
-<img src="{filename}curves-dialog-darks-blue-boost-add-yellow.png" alt="Blue Boost add Yellow" />
-</figure>
-
-<figure>
-<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
-<img alt="Blue boost add yellow" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
class="comp" src="{filename}flickr-qsimple-5636649561-dark-blue-boost-add-yellow.jpg" />
-<figcaption>Boost blues in darks, boost yellow in high tones (click for original).
-<noscript><br /> (Original on left)</noscript>
-</figcaption>
-</figure>
-
-In the green channel for instance, you can begin to introduce more magenta into the tones by decreasing the
curve. So dropping the green curve in the dark tones, and letting it settle back to normal towards the high
tones will produce results like this:
-
-<figure>
-<img src="{filename}curves-dialog-darks-green-suppress.png" alt="Darks Green Suppress" />
-</figure>
-
-<figure markdown='span'>
-<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
-<img alt="Dark green suppress" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg" class="comp"
src="{filename}flickr-qsimple-5636649561-dark-green-suppresst.jpg" />
-<figcaption>Suppressing the **green** channel in darks/mids adds a bit of **magenta**
-(click for original).
-<noscript><br /> (Original on left)</noscript>
-</figcaption>
-</figure>
-
-In isolation, these curves are fun to play with, but I think that perhaps walking through some actual
examples of color toning/grading would help to illustrate what I’m talking about here. I’ll choose a couple
of common toning examples to show what happens when you begin mixing all three channels up.
-
-## Color Toning/Grading
-
-### **Orange** and **Teal** Hell
-
-I use the (_cinema film_) term _color grading_ here because the first adjustment we will have a look at to
illustrate curves is a horrible hollywood trend that is best described by [Todd Miro on his
blog](http://theabyssgazes.blogspot.com/2010/03/teal-and-orange-hollywood-please-stop.html).
-
-_Grading_ is a term for color toning on film, and Todd’s post is a funny look at the prevalence of orange
and teal in modern film palettes. So it’s worth a look just to see how silly this is (and hopefully to raise
awareness of the obnoxiousness of this practice).
-
-The general thought here is that caucasian skin tones trend towards orange, and if you have a look at a
complementary color on the color wheel, you’ll notice that directly opposite orange is a teal color.
-
-<figure markdown='span'>
-<img src="{filename}Kuler_orange_teal.jpg" alt="Kuler Example" >
-<figcaption>
-Screenshot from [Kuler](https://color.adobe.com) borrowed from Todd.
-</figcaption>
-</figure>
-
-If you don’t already know about it, Adobe has online a fantastic tool for color visualization and palette
creation called [<del>Kuler</del>](http://kuler.adobe.com) [**Adobe Color CC**](https://color.adobe.com). It
lets you work on colors based on some classic rules, or even generate a color palette from images. Well worth
a visit and a fantastic bookmark for fiddling with color.
-
-So a quick look at the desired effect would be to keep/boost the skin tones into a sort of orange-y pinkish
color, and to push the darker tones into a teal/cyan combination. (Colorists on films tend to use a Lift,
Gamma, Gain model, but we’ll just try this out with our curves here).
-
-Quick disclaimer - I am purposefully exaggerating these modifications to illustrate what they do. Like most
things, moderation and restraint will go a long ways towards not causing your viewers eyeballs to bleed.
_Remember - **light touch!**_
-
-So I know that I want to see my skin tones head into an orange-ish color. In my image the skin tones are in
the upper mids/low highs range of values, so I will start around there.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-red-high.png" alt="orangeteal red high" />
-</figure>
-
-What I’ve done is put a point around the low midtones to anchor the curve closer to normal for those tones.
This lets me fiddle with the red channel and to isolate it roughly to the mid and high tones only. The skin
tones in this image in the red channel will fall toward the upper end of the mids, so I’ve boosted the reds
there. Things may look a little weird at first:
-
-<figure>
-<img src="{filename}flickr-qsimple-5636649561-orangeteal-red-highs.jpg" alt="orangeteal red highs" />
-</figure>
-
-If you look back at the color wheel again, you’ll notice that between red and green, there is a yellow, and
if you go a bit closer towards red the yellow turns to more of an orange. What this means is that if we add
some more green to those same tones, the overall colors will start to shift towards an orange.
-
-So we can switch to the green channel now, put a point in the lower midtones again to hold things around
normal, and slightly boost the green. Don’t boost it all the way to the reds, but about 2/3<sup>rds</sup> or
so to taste.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-green-high.png" alt="orangeteal green high" />
-</figure>
-
-<figure>
-<img src="{filename}flickr-qsimple-5636649561-orangeteal-green-highs.jpg" alt="orangeteal green high" />
-</figure>
-
-This puts a little more red/orange-y color into the tones around the skin. You could further adjust this by
perhaps including a bit more yellow as well. To do this, I would again put an anchor point in the low mid
tones on the blue channel, then slightly drop the blue curve in the upper tones to introduce a bit of yellow.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-blue-high.png" alt="orangeteal blue high" />
-</figure>
-
-<figure>
-<img src="{filename}flickr-qsimple-5636649561-orangeteal-blue-highs.jpg" alt="orangeteal blue high" />
-</figure>
-
-Remember, we’re experimenting here so feel free to try things out as we move along. I may consider the upper
tones to be finished at the moment, and now I would want to look at introducing a more blue/teal color into
the darker tones.
-
-I can start by boosting a bit of blues in the dark tones. I’m going to use the anchor point I already
created, and just push things up a bit.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-blue-low.png" alt="orangeteal blue low" />
-</figure>
-
-<figure>
-<img src="{filename}flickr-qsimple-5636649561-orangeteal-blue-lows.jpg" alt="orangeteal blue low" />
-</figure>
-
-Now I want to make the darker tones a bit more teal in color. Remember the color wheel - **teal** is the
absence of red - so we will drop down the red channel in the lower tones as well.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-red-low.png" alt="orangeteal red low" />
-</figure>
-
-<figure>
-<img src="{filename}flickr-qsimple-5636649561-orangeteal-red-lows.jpg" alt="orangeteal red low" />
-</figure>
-
-And finally to push a very slight magenta into the dark tones as well, I’ll push down the green channel a
bit.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-green-low.png" alt="orangeteal green low" />
-</figure>
-
-<figure>
-<img src="{filename}flickr-qsimple-5636649561-orangeteal-green-lows.jpg" alt="orangeteal green low" />
-</figure>
-
-If I wanted to go a step further, I could also put an anchor point up close to the highest values to keep
the brightest parts of the image closer to a white instead of carrying over a color cast from our previous
operations.
-
-If your previous operations also darkened the image a bit, you could also now revisit the **Value** channel,
and make modifications there as well. In my case I bumped the midtones of the image just a bit to brighten
things up slightly.
-
-<figure>
-<img src="{filename}curves-dialog-orangeteal-value-final.png" alt="orangeteal value final" />
-</figure>
-
-Finally to end up at something like this.
-
-<figure>
-<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
-<img alt="orangeteal value final" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
class="comp" src="{filename}flickr-qsimple-5636649561-orangeteal-value-final.jpg" />
-<figcaption>After fooling around a bit - disgusting, isn’t it?
-(click for original).
-<noscript><br /> (Original on left)</noscript>
-</figcaption>
-</figure>
-
-I am exaggerating things here to illustrate a point. Please don’t do this to your photos. :)
-
-If you’d like to download the curves file of the results we reached above, get it here:
-[Orange Teal Hell Color Curves](https://docs.google.com/open?id=0B21lPI7Ov4CVdmJnOXpkQjN4aWc)
-
-## Conclusion[](#conclusion)
-
-Remember, think about what the color curves represent in your image to help you achieve your final results.
Begin looking at the different tonalities in your image and how you’d like them to appear as part of your
final vision.
-
-For even more fun - realize that the colors in your images can help to evoke emotional responses in the
viewer, and adjust things accordingly. I’ll leave it as an exercise for the reader to determine some of the
associations between colors and different emotions.
-
-The original tutorial this was adapted from may be found
[here](http://blog.patdavid.net/2012/06/getting-around-in-gimp-color-curves.html) or
[here](https://pixls.us/articles/basic-color-curves/) on [pixls.us](https://pixls.us) (possibly with updated
information).
-
-<small>
-[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
-<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Basic Color Curves (text & images)</span> by
[Pat David](http://blog.patdavid.net) is licensed under a [Creative Commons Attribution-ShareAlike 3.0
Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US) (except _Hollow Moon_ by
_qsimple/Eric_ on [Flickr](https://www.flickr.com/people/qsimple/)).
-</small>
-
-<script type="text/javascript">
-<!--
-/*
-* Simple image swapping using html5 data-* attributes.
-* Get all images with the 'data-swap-src' attribute.
-* For each image, set the 'data-swap' attribute to a start value
-* Add event listener to the images to trigger swap function
-* swap function swaps out the current src and data-swap values
-*/
-
-var imgs = document.querySelectorAll('[data-swap-src]');
-var images_pre = new Array();
-
-for ( var i = 0; i < imgs.length; i++ ){
- var img = imgs[i];
- var datasrc = decodeURI( img.src );
- var dataswap = img.getAttribute('data-swap-src');
-
- if( datasrc.toLowerCase().indexOf('{filename}') !== -1 ){
- // {filename} is in src
- imgs[i].src = datasrc.replace( /.*{filename}/i, dataswap.replace( /[^\/]*$/, '' ) );
- }else if( dataswap.toLowerCase().indexOf('{filename}') !== -1 ){
- // {filename is in data-swap-src
- imgs[i].setAttribute( 'data-swap-src', dataswap.replace( /.*{filename}/i, datasrc.replace(
/[^\/]*$/, '' ) ) );
- }
-
- imgs[i].setAttribute('data-swap', imgs[i].getAttribute('data-swap-src') );
- imgs[i].addEventListener('click', swap, false);
- imgs[i].style.cursor = "crosshair";
- images_pre[i] = new Image();
- images_pre[i].src = imgs[i].getAttribute('data-swap-src');
-}
-
-function swap(evt){
- var et = evt.target;
- var tmp = et.src;
- et.src = et.getAttribute('data-swap');
- et.setAttribute('data-swap', tmp);
- et.style.cursor == "crosshair" ? et.style.cursor = "w-resize" : et.style.cursor = "crosshair";
- }
-
---></script>
-
+Title: Basic Color Curves
+Date: 2015-08-18T13:18:54-05:00
+Modified: 2015-08-18T13:19:00-05:00
+Author: Pat David
+
+<noscript>
+<style>
+.comp {
+ width: 450px;
+}
+</style>
+</noscript>
+
+<small>
+[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
+<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Basic Color Curves (text & images)</span> by
[Pat David](http://blog.patdavid.net) is licensed under a [Creative Commons Attribution-ShareAlike 3.0
Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US) (except _Hollow Moon_ by
_qsimple/Eric_ on [Flickr](https://www.flickr.com/people/qsimple/)).
+</small>
+
+Color has this amazing ability to evoke emotional responses from us. From the warm glow of a sunny summer
afternoon to a cool refreshing early evening in fall. We associate colors with certain moods, places,
feelings, and memories (consciously or not).
+
+Volumes have been written on color and I am in no ways even remotely qualified to speak on it. So I won’t.
+
+Instead, we are going to take a look at the use of the **Curves** tool in [GIMP](//www.gimp.org). Even
though GIMP is used to demonstrate these ideas, the principles are generic to just about any RGB curve
adjustments.
+
+## Your Pixels and You[](#your-pixels-and-you)
+
+First there’s something you need to consider if you haven’t before, and that’s what goes into representing a
colored pixel on your screen.
+
+<figure>
+<img src="{filename}curves-house-square-full.jpg" alt="PIXLS.US House Zoom Example" />
+<figcaption>
+Open up an image in GIMP.
+</figcaption>
+</figure>
+
+
+<figure>
+<img src="{filename}curves-house-square-zoom-1.jpg" alt="PIXLS.US House Zoom Example" />
+<figcaption>
+Now zoom in.
+</figcaption>
+</figure>
+
+<figure>
+<img src="{filename}curves-house-square-zoom-2.jpg" alt="PIXLS.US House Zoom Example" />
+<figcaption>
+Nope - don’t be shy now, zoom in more!
+</figcaption>
+</figure>
+
+<figure>
+<img src="{filename}curves-house-square-zoom-3.png" alt="PIXLS.US House Zoom Example" />
+<figcaption>
+Aaand there’s your pixel. So let’s investigate what goes into making your pixel.
+</figcaption>
+</figure>
+
+
+Remember, each pixel is represented by a combination of 3 colors: **Red**, **Green**, and **Blue**. In GIMP
(currently at 8-bit), that means that each RGB color can have a value from **0 - 255**, and combining these
three colors with varying levels in each channel will result in all the colors you can see in your image.
+
+If all three channels have a value of 255 - then the resulting color will be pure white. If all three
channels have a value of 0 - then the resulting color will be pure black.
+
+If all three channels have the same value, then you will get a shade of gray (128,128,128 would be a middle
gray color for instance).
+
+So now let’s see what goes into making up your pixel:
+
+<figure>
+<img src="{filename}curves-your-pixel-info.png" alt="GIMP Color Picker Pixel View" >
+<figcaption>
+The RGB components that mix into your final <span style="color: #7ba3ce;">blue pixel</span>.
+</figcaption>
+</figure>
+
+As you can see, there is more blue than anything else (it is a blue-ish pixel after all), followed by green,
then a dash of red. If we were to change the values of each channel, but kept ratio the same between Red,
Green, and Blue, then we would keep the same color and just lighten or darken the pixel by some amount.
+
+## Curves: Value[](#curves-value)
+
+So let’s leave your pixel alone for the time being, and actually have a look at the **Curves** dialog. I’ll
be using this wonderful image by [Eric](http://www.flickr.com/photos/qsimple/) from
[Flickr](http://www.flickr.com).
+
+<figure markdown="span">
+<img src="{filename}flickr-qsimple-5636649561-original.jpg" alt="Hollow Moon by Eric qsimple Flickr" >
+<figcaption>
+[Hollow Moon](http://www.flickr.com/photos/qsimple/5636649561/) by
[qsimple/Eric](http://www.flickr.com/photos/qsimple/) on [Flickr](http://www.flickr.com).
([cc-by-nc-sa](http://creativecommons.org/licenses/by-nc-sa/2.0/))
+</figcaption>
+</figure>
+
+Opening up my **Curves** dialog shows me the following:
+
+<div class="MenuCmd"><span>Colors → Curves…</span></div>
+
+<figure>
+<img src="{filename}curves-dialog-original.png" alt="GIMP Base Curves Dialog" />
+</figure>
+
+We can see that I start off with the curve for the **Value** of the pixels. I could also use the drop down
for **“Channel”** to change to red, green or blue curves if I wanted to. For now let’s look at **Value**,
though.
+
+In the main area of the dialog I am presented with a linear curve, behind which I will see a histogram of
the value data for the entire image (showing the amount of each value across my image). Notice a spike in the
high values on the right, and a small gap at the brightest values.
+
+<figure>
+<img src="{filename}curves-dialog-original-IO.png" alt="GIMP Base Curves Dialog Input Output" />
+</figure>
+
+What we can do right now is to adjust the values of each pixel in the image using this curve. The best way
to visualize it is to remember that the bottom range from black to white represents the <span style="color:
#0000ff">**_current_** value of the pixels</span>, and the left range is the <span style="color:
#ff6f00">value to be mapped to</span>.
+
+So to show an example of how this curve will affect your image, suppose I wanted to remap all the values in
the image that were in the midtones, and to make them all lighter. I can do this by clicking on the curve
near the midtones, and dragging the curve higher in the Y direction:
+
+<figure>
+<img src="{filename}curves-dialog-midtones.png" alt="GIMP Base Curves Dialog Push Midtones" />
+</figure>
+
+What this curve does is takes the values around the midtones, and pushes their values to be much lighter
than they were. In this case, values around <span style="color: #0000ff">128</span> were re-mapped to now be
closer to <span style="color: #ff6f00">192</span>.
+
+Because the curve is set **Smooth**, there will be a gradual transition for all the tones surrounding my
point to be pulled in the same direction (this makes for a smoother fall-off as opposed to an abrupt change
at one value). Because there is only a single point in the curve right now, this means that all values will
be pulled higher.
+
+<figure>
+<noscript><img alt="Hollow Moon Example" class="comp" src="{FILENAME}flickr-qsimple-5636649561-original.jpg"
/></noscript>
+<img class="comp" alt="Hollow Moon Example Pushed Midtones"
data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
src="{filename}flickr-qsimple-5636649561-mid-boostl.jpg" />
+<figcaption>
+The results of pushing the midtones of the value curve higher<br/>
+(click to compare to original).
+<noscript><br /> (Original on left)</noscript>
+</figcaption>
+</figure>
+
+Care should be taken when fiddling with these curves to not blow things out or destroy detail, of course. I
only push the curves here to illustrate what they do.
+
+A very common curve adjustment you may hear about is to apply a slight “S” curve to your values. The effect
of this curve would be to darken the dark tones, and to lighten the light tones - in effect increasing global
contrast on your image. For instance, if I click on another point in the curves, and adjust the points to
form a shape like so:
+
+<figure>
+<img src="{filename}curves-dialog-slight-s.png" alt="GIMP Base Curves Dialog S shaped curve" >
+<figcaption>
+A slight “S” curve
+</figcaption>
+</figure>
+
+This will now cause dark values to become even darker, while the light values get a small boost. The curve
still passes through the midpoint, so middle tones will stay closer to what they were.
+
+<figure>
+<noscript><img class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg" alt="Hollow Moon Example"
/></noscript>
+<img alt="Hollow Moon Example S curve applied"
data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg" class="comp"
src="{filename}flickr-qsimple-5636649561-slight-s.jpg" />
+<figcaption>Slight “S” curve increases global contrast (click for original).
+<noscript><br /> (Original on left)</noscript>
+</figcaption>
+</figure>
+
+In general, I find it easiest to visualize in terms of which regions in the curve will effect different
tones in your image. Here is a quick way to visualize it (that is true for value as well as RGB curves):
+
+<figure>
+<img src="{filename}curves-dialog-darksmidslights.png" alt="GIMP Base Curves darks mids lights zones" />
+</figure>
+
+If there is one thing you take away from reading this, let it be the image above.
+
+## Curves: <span style="color:red;">Co</span><span style="color:green;">lo</span><span
style="color:blue;">rs</span>[](#curves-span-style-color-red-co-span-span-style-color-green-lo-span-span-style-color-blue-rs-span-)
+
+So how does this apply to other channels? Let’s have a look.
+
+The exact same theory applies in the RGB channels as it did with values. The relative positions of the
darks, midtones, and lights are still the same in the curve dialog. The primary difference now is that you
can control the contribution of color in specific tonal regions of your image.
+
+<figure>
+<img src="{filename}curves-dialog-value-rgb-select.png" alt="RGB Select" >
+<figcaption>
+Value, Red, Green, Blue channel picker.
+</figcaption>
+</figure>
+
+You choose which channel you want to adjust from the **“Channel”** drop-down.
+
+To begin demonstrating what happens here it helps to have an idea of generally what effect you would like to
apply to your image. This is often the hardest part of adjusting the color tones if you don’t have a clear
idea to start with.
+
+For example, perhaps we wanted to “cool” down the shadows of our image. “Cool” shadows are commonly seen
during the day in shadows out of direct sunlight. The light that does fall in shadows is mostly reflected
light from a blue-ish sky, so the shadows will trend slightly more blue.
+
+To try this, let’s adjust the **Blue** channel to be a little more prominent in the darker tones of our
image, but to get back to normal around the midtones and lighter.
+
+<figure>
+<img src="{filename}curves-dialog-darks-blue-boost.png" alt="Darks Blue Boost" >
+<figcaption>
+Boosting blues in darker tones
+</figcaption>
+</figure>
+
+<figure>
+<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
+<img alt="Dark Blue Boost" class="comp" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
src="{filename}flickr-qsimple-5636649561-dark-blue-boost.jpg" />
+<figcaption>Pushing up blues in darker tones (click for original).
+<noscript><br /> (Original on left)</noscript>
+</figcaption>
+</figure>
+
+Now, here’s a question: If I wanted to “cool” the darker tones with more blue, what if I wanted to “warm”
the lighter tones by adding a little yellow?
+
+Well, there’s no “Yellow” curve to modify, so how to approach that? Have a look at this HSV color wheel
below:
+
+<figure>
+<img src="{filename}Color_circle.png" alt="Color Circle Hue" />
+</figure>
+
+The thing to look out for here is that opposite your blue tones on this wheel, you’ll find yellow. In fact,
for each of the Red, Green, and Blue channels, the opposite colors on the color wheel will show you what an
absence of that color will do to your image. So remember:
+
+<div style="text-align: center;"><span style="color: red;">Red</span> → <span style="color:
cyan;">Cyan</span></span><br/><span><span style="color: green;">Green</span> → <span style="color:
magenta;">Magenta</span></span><br/><span><span style="color: blue;">Blue</span> → <span style="color:
yellow;">Yellow</span></div>
+
+What this means to you while manipulating curves is that if you drag a curve for blue up, you will boost the
blue in that region of your image. If instead you drag the curve for blue down, you will be **_removing_**
blues (or boosting the **Yellows** in that region of your image).
+
+So to boost the blues in the dark tones, but increase the yellow in the lighter tones, you could create a
sort of “reverse” S-curve in the blue channel:
+
+<figure>
+<img src="{filename}curves-dialog-darks-blue-boost-add-yellow.png" alt="Blue Boost add Yellow" />
+</figure>
+
+<figure>
+<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
+<img alt="Blue boost add yellow" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
class="comp" src="{filename}flickr-qsimple-5636649561-dark-blue-boost-add-yellow.jpg" />
+<figcaption>Boost blues in darks, boost yellow in high tones (click for original).
+<noscript><br /> (Original on left)</noscript>
+</figcaption>
+</figure>
+
+In the green channel for instance, you can begin to introduce more magenta into the tones by decreasing the
curve. So dropping the green curve in the dark tones, and letting it settle back to normal towards the high
tones will produce results like this:
+
+<figure>
+<img src="{filename}curves-dialog-darks-green-suppress.png" alt="Darks Green Suppress" />
+</figure>
+
+<figure markdown='span'>
+<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
+<img alt="Dark green suppress" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg" class="comp"
src="{filename}flickr-qsimple-5636649561-dark-green-suppresst.jpg" />
+<figcaption>Suppressing the **green** channel in darks/mids adds a bit of **magenta**
+(click for original).
+<noscript><br /> (Original on left)</noscript>
+</figcaption>
+</figure>
+
+In isolation, these curves are fun to play with, but I think that perhaps walking through some actual
examples of color toning/grading would help to illustrate what I’m talking about here. I’ll choose a couple
of common toning examples to show what happens when you begin mixing all three channels up.
+
+## Color Toning/Grading
+
+### **Orange** and **Teal** Hell
+
+I use the (_cinema film_) term _color grading_ here because the first adjustment we will have a look at to
illustrate curves is a horrible hollywood trend that is best described by [Todd Miro on his
blog](http://theabyssgazes.blogspot.com/2010/03/teal-and-orange-hollywood-please-stop.html).
+
+_Grading_ is a term for color toning on film, and Todd’s post is a funny look at the prevalence of orange
and teal in modern film palettes. So it’s worth a look just to see how silly this is (and hopefully to raise
awareness of the obnoxiousness of this practice).
+
+The general thought here is that caucasian skin tones trend towards orange, and if you have a look at a
complementary color on the color wheel, you’ll notice that directly opposite orange is a teal color.
+
+<figure markdown='span'>
+<img src="{filename}Kuler_orange_teal.jpg" alt="Kuler Example" >
+<figcaption>
+Screenshot from [Kuler](https://color.adobe.com) borrowed from Todd.
+</figcaption>
+</figure>
+
+If you don’t already know about it, Adobe has online a fantastic tool for color visualization and palette
creation called [<del>Kuler</del>](http://kuler.adobe.com) [**Adobe Color CC**](https://color.adobe.com). It
lets you work on colors based on some classic rules, or even generate a color palette from images. Well worth
a visit and a fantastic bookmark for fiddling with color.
+
+So a quick look at the desired effect would be to keep/boost the skin tones into a sort of orange-y pinkish
color, and to push the darker tones into a teal/cyan combination. (Colorists on films tend to use a Lift,
Gamma, Gain model, but we’ll just try this out with our curves here).
+
+Quick disclaimer - I am purposefully exaggerating these modifications to illustrate what they do. Like most
things, moderation and restraint will go a long ways towards not causing your viewers eyeballs to bleed.
_Remember - **light touch!**_
+
+So I know that I want to see my skin tones head into an orange-ish color. In my image the skin tones are in
the upper mids/low highs range of values, so I will start around there.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-red-high.png" alt="orangeteal red high" />
+</figure>
+
+What I’ve done is put a point around the low midtones to anchor the curve closer to normal for those tones.
This lets me fiddle with the red channel and to isolate it roughly to the mid and high tones only. The skin
tones in this image in the red channel will fall toward the upper end of the mids, so I’ve boosted the reds
there. Things may look a little weird at first:
+
+<figure>
+<img src="{filename}flickr-qsimple-5636649561-orangeteal-red-highs.jpg" alt="orangeteal red highs" />
+</figure>
+
+If you look back at the color wheel again, you’ll notice that between red and green, there is a yellow, and
if you go a bit closer towards red the yellow turns to more of an orange. What this means is that if we add
some more green to those same tones, the overall colors will start to shift towards an orange.
+
+So we can switch to the green channel now, put a point in the lower midtones again to hold things around
normal, and slightly boost the green. Don’t boost it all the way to the reds, but about 2/3<sup>rds</sup> or
so to taste.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-green-high.png" alt="orangeteal green high" />
+</figure>
+
+<figure>
+<img src="{filename}flickr-qsimple-5636649561-orangeteal-green-highs.jpg" alt="orangeteal green high" />
+</figure>
+
+This puts a little more red/orange-y color into the tones around the skin. You could further adjust this by
perhaps including a bit more yellow as well. To do this, I would again put an anchor point in the low mid
tones on the blue channel, then slightly drop the blue curve in the upper tones to introduce a bit of yellow.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-blue-high.png" alt="orangeteal blue high" />
+</figure>
+
+<figure>
+<img src="{filename}flickr-qsimple-5636649561-orangeteal-blue-highs.jpg" alt="orangeteal blue high" />
+</figure>
+
+Remember, we’re experimenting here so feel free to try things out as we move along. I may consider the upper
tones to be finished at the moment, and now I would want to look at introducing a more blue/teal color into
the darker tones.
+
+I can start by boosting a bit of blues in the dark tones. I’m going to use the anchor point I already
created, and just push things up a bit.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-blue-low.png" alt="orangeteal blue low" />
+</figure>
+
+<figure>
+<img src="{filename}flickr-qsimple-5636649561-orangeteal-blue-lows.jpg" alt="orangeteal blue low" />
+</figure>
+
+Now I want to make the darker tones a bit more teal in color. Remember the color wheel - **teal** is the
absence of red - so we will drop down the red channel in the lower tones as well.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-red-low.png" alt="orangeteal red low" />
+</figure>
+
+<figure>
+<img src="{filename}flickr-qsimple-5636649561-orangeteal-red-lows.jpg" alt="orangeteal red low" />
+</figure>
+
+And finally to push a very slight magenta into the dark tones as well, I’ll push down the green channel a
bit.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-green-low.png" alt="orangeteal green low" />
+</figure>
+
+<figure>
+<img src="{filename}flickr-qsimple-5636649561-orangeteal-green-lows.jpg" alt="orangeteal green low" />
+</figure>
+
+If I wanted to go a step further, I could also put an anchor point up close to the highest values to keep
the brightest parts of the image closer to a white instead of carrying over a color cast from our previous
operations.
+
+If your previous operations also darkened the image a bit, you could also now revisit the **Value** channel,
and make modifications there as well. In my case I bumped the midtones of the image just a bit to brighten
things up slightly.
+
+<figure>
+<img src="{filename}curves-dialog-orangeteal-value-final.png" alt="orangeteal value final" />
+</figure>
+
+Finally to end up at something like this.
+
+<figure>
+<noscript><img alt="Original" class="comp" src="{filename}flickr-qsimple-5636649561-original.jpg"
/></noscript>
+<img alt="orangeteal value final" data-swap-src="{filename}flickr-qsimple-5636649561-original.jpg"
class="comp" src="{filename}flickr-qsimple-5636649561-orangeteal-value-final.jpg" />
+<figcaption>After fooling around a bit - disgusting, isn’t it?
+(click for original).
+<noscript><br /> (Original on left)</noscript>
+</figcaption>
+</figure>
+
+I am exaggerating things here to illustrate a point. Please don’t do this to your photos. :)
+
+If you’d like to download the curves file of the results we reached above, get it here:
+[Orange Teal Hell Color Curves](https://docs.google.com/open?id=0B21lPI7Ov4CVdmJnOXpkQjN4aWc)
+
+## Conclusion[](#conclusion)
+
+Remember, think about what the color curves represent in your image to help you achieve your final results.
Begin looking at the different tonalities in your image and how you’d like them to appear as part of your
final vision.
+
+For even more fun - realize that the colors in your images can help to evoke emotional responses in the
viewer, and adjust things accordingly. I’ll leave it as an exercise for the reader to determine some of the
associations between colors and different emotions.
+
+The original tutorial this was adapted from may be found
[here](http://blog.patdavid.net/2012/06/getting-around-in-gimp-color-curves.html) or
[here](https://pixls.us/articles/basic-color-curves/) on [pixls.us](https://pixls.us) (possibly with updated
information).
+
+<small>
+[![Creative Commons
License](http://i.creativecommons.org/l/by-sa/3.0/80x15.png)](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)
+<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - Basic Color Curves (text & images)</span> by
[Pat David](http://blog.patdavid.net) is licensed under a [Creative Commons Attribution-ShareAlike 3.0
Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US) (except _Hollow Moon_ by
_qsimple/Eric_ on [Flickr](https://www.flickr.com/people/qsimple/)).
+</small>
+
+<script type="text/javascript">
+<!--
+/*
+* Simple image swapping using html5 data-* attributes.
+* Get all images with the 'data-swap-src' attribute.
+* For each image, set the 'data-swap' attribute to a start value
+* Add event listener to the images to trigger swap function
+* swap function swaps out the current src and data-swap values
+*/
+
+var imgs = document.querySelectorAll('[data-swap-src]');
+var images_pre = new Array();
+
+for ( var i = 0; i < imgs.length; i++ ){
+ var img = imgs[i];
+ var datasrc = decodeURI( img.src );
+ var dataswap = img.getAttribute('data-swap-src');
+
+ if( datasrc.toLowerCase().indexOf('{filename}') !== -1 ){
+ // {filename} is in src
+ imgs[i].src = datasrc.replace( /.*{filename}/i, dataswap.replace( /[^\/]*$/, '' ) );
+ }else if( dataswap.toLowerCase().indexOf('{filename}') !== -1 ){
+ // {filename is in data-swap-src
+ imgs[i].setAttribute( 'data-swap-src', dataswap.replace( /.*{filename}/i, datasrc.replace(
/[^\/]*$/, '' ) ) );
+ }
+
+ imgs[i].setAttribute('data-swap', imgs[i].getAttribute('data-swap-src') );
+ imgs[i].addEventListener('click', swap, false);
+ imgs[i].style.cursor = "crosshair";
+ images_pre[i] = new Image();
+ images_pre[i].src = imgs[i].getAttribute('data-swap-src');
+}
+
+function swap(evt){
+ var et = evt.target;
+ var tmp = et.src;
+ et.src = et.getAttribute('data-swap');
+ et.setAttribute('data-swap', tmp);
+ et.style.cursor == "crosshair" ? et.style.cursor = "w-resize" : et.style.cursor = "crosshair";
+ }
+
+--></script>
+
diff --git a/content/tutorials/Basic_Scheme/index.md b/content/tutorials/Basic_Scheme/index.md
index 9c7a982..f1c7f91 100644
--- a/content/tutorials/Basic_Scheme/index.md
+++ b/content/tutorials/Basic_Scheme/index.md
@@ -1,541 +1,541 @@
-Title: Basic Scheme
-Date: 2015-08-18T16:27:00-05:00
-Modified: 2015-08-18T16:27:04-05:00
-Author: Dov Grobgeld
-
-
-Text and images Copyright (C) 2002 [Dov Grobgeld](mailto:dovNOSPAM imagic weizmann ac il) and may not be
used without permission of the author.
-
-_Editor's note: since this tutorial was published, the old GIMP Script-Fu interpreter (SIOD) has been
replaced by a newer and better one (TinyScheme). A [Script-Fu migration guide](/docs/script-fu-update.html)
is available._
-
-## Intention
-
-One of the wonderful features of GIMP is that it all its functionality may be accessed through scripting.
The major scripting language for GIMP that has been attached to it today is Scheme. This document will try to
be a brief introduction to Scheme, just teaching the essentials in order to write Script-Fu scripts, without
getting into the programming language theory that is so typical of other Scheme references.
-
-## 1\. Expressions
-
-Scheme is a Lisp variant and all expressions are surrounded by parentheses. E.g. a list which will calculate
the sum of 3 and 4 is written
-
- :::scheme
- (+ 3 4)
-
-
-The + sign is the addition function and 3 and 4 are the first and second parameters to this function.
Expressions may be nested, so the expression (3+4)*(5/6) would in Scheme be written
-
- :::scheme
- (* (+ 3 4) (/ 5 6))
-
-
-White space has no importance so the above expression may as well be written:
-
- :::scheme
- (*
- (+ 3 4)
- (/ 5 6))
-
-
-## 2\. Functions
-
-Aside from the four arithmetic functions that are represented through the symbols + - * / there are lots of
other functions built into the language. All of them have the form
-
- :::scheme
- (foo param1 param2 ...)
-
-
-Additional functions may be defined by the user through the define keyword. E.g. a function that calculates
the square value of its single argument may be declared like this
-
- :::scheme
- (define (square x) (* x x))
-
-
-and this function may be called through
-
- :::scheme
- (square 5)
-
-
-## 3\. Variables and lists
-
-Variables may be declared and set through the set! command. (These variables will be global but this should
not bother the casual GIMP programmer). Here are a couple of assignments:
-
- :::scheme
- (set! grey_value 85)
- (set! angle (* (/ 30 180) 3.141)
-
-
-Lisp and its variants make heavy use of lists. Script-Fu is no exception and it uses e.g. a list of three
elements to write a RGB color. E.g. the color orange would be written
-
- :::scheme
- '(255 127 0)
-
-
-The ' sign is necessary in order to tell Scheme that this is a literal list. If the ' was omitted Scheme
would try to look up a function with the name 255 and send it the two parameters 127 and 0, which is
obviously not what we want.
-
-To create a variable called orange with the above value and then set the background color to it we may do
-
- :::scheme
- (set! orange '(255 127 0))
- (gimp-set-background-color orange)
-
-
-## 3.1 car, cdr and friends (*)
-
-A list in Scheme is always composed of a head and a tail. The head is the first entry in the list, and the
tail is the rest of the elements in the list. This means that the list (255 127 63) really means (255 (127
(63 ()))) but Scheme allows the previous form as a shortcut. The car function is used to return the head of
the list and the cdr (usually pronounced cudder) is used to get the tail of the list.
-
-[The following is a test of the above functions which may be interactively conducted in the Script-Fu
console.]
-
- :::scheme
- => (set! color '(255 127 63))
- (255 127 63)
- => (car color)
- 255
- => (cdr color)
- (127 63)
-
-
-To get the blue component of a color it is necessary to apply the cdr function twice and then the car
function.
-
- :::scheme
- => (car (cdr (cdr color)))
- 63
-
-
-This is very inconvenient to write. Therefore there have been defined abreviations of the form cadr, cddr,
caddr, etc that concatenate the operations described above. The previous expression may therefore be much
more conveniently written:
-
- :::scheme
- => (caddr color)
- 63
-
-
-For the Script-Fu writer one of the most important uses of the car function is to access the returned values
from the built-in GIMP functions. All gimp-functions return a list, and even if the list contains only one
element it must be accessed by car. This is e.g. the case for the important functions gimp-new-image and
gimp-new-layer used below.
-
-## 3.2 Local variables (*)
-
-More experienced Scheme programmers mostly use local variables instead of the global variables described
above. This is considered better programming practice and this construct should be recognized in order to be
able to read others Script-Fu scripts.
-
-Local variables are declared through the the let keyword as in the following example:
-
- :::scheme
- (let* ((a 3)
- (b 4))
- ((* a b)))
-
-
-Here a and b have a local scope and retain their values only up to the closing paren matching the one before
let\* .
-
-## 4\. The GIMP PDB
-
-All functionality of GIMP is available through the procedural database (PDB). Each procedural database
function has a corresponding Scheme function mapping. E.g.
-
- :::scheme
- (gimp-image-new 100 150 RGB)
-
-
-produces a new GIMP image of type RGB and size 100x150.
-
-All the functions of the PDB may be accessed through the Procedure Browser that is available from the main
menu through <span class="filter">Xtns ->Procedure Browser</span>.... E.g. the Procedure Browser entry for
uni-img, which we will define in the example below looks like this:
-
-<figure>
-<img src="{filename}pdb-uni-entry.png" alt="pdb-uni-entry.png" />
-</figure>
-
-For the Script-Fu programmer this information shows that uni-img may be called with three parameters of the
types INT32, STRING and COLOR. The different types will be explained below.
-
-## 5\. Registering the script with Script-Fu
-
-After a function has been written it has to be registered with Script-Fu before it can be used. This is done
through the Scheme function script-fu-register. The registering has following purposes:
-
-1. Tell Script-Fu the type of parameters the script takes and give these parameters default values.
-2. Give the script a name to be used as the menu label.
-3. Register the script as a command in the PDB.
-
-The last point above actually means that a script is from Gimp's viewpoint in no way different from a
built-in command or a plugin command. As long as a command is registered in the PDB it can be called by any
script or plugin.
-
-The parameters of script-fu-register may be divided into two groups. The first group of seven parameters
must always be given. These are:
-
-1. The name of the function.
-2. The name of the script to be used as a menu entry.
-3. A help string describing the function of the script.
-4. The script author.
-5. The script copyright.
-6. Script date.
-7. List of valid image types for the script. This only has a meaning on scripts operating on images that
already exist.
-
-After these seven parameters have been given, a list of the parameters required by the script follows. Each
parameter is given as a group of three items:
-
-1. The type of the parameter. Some of the valid types are:
-
- <dl>
-
- <dt>**SF-COLOR**</dt>
-
- <dd>An RGB color.</dd>
-
- <dt>**SF-TOGGLE**</dt>
-
- <dd>A true or false value.</dd>
-
- <dt>**SF-STRING**</dt>
-
- <dd>A string of characters enclosed in double quotes.</dd>
-
- <dt>**SF-VALUE**</dt>
-
- <dd>Any scalar value, integer, or floating point.</dd>
-
- <dt>**SF-IMAGE**</dt>
-
- <dt>**SF-DRAWABLE**</dt>
-
- </dl>
-
-2. A label for Script-Fu to display when querying for the parameter.
-3. A default value.
-
-## 6\. A commented script
-
-The following script **uni.scm** receives two parameters from the user, the size of the image and a color,
and goes on to produce a uniform image of the requested size and the requested color. Not very useful, but it
shows the essential steps in producing a Script-Fu script.
-
- :::scheme
- ; Define the function of the script and list its parameters
- ; The parameters will be matched with the parameters listed
- ; below in script-fu-register.
-
- (define (uni-img size color)
- ; Create an img and a layer
- (set! img (car (gimp-image-new size size RGB)))
- (set! layer (car (gimp-layer-new img size size
- RGB "layer 1" 100 NORMAL)))
-
- ; The following is done for all scripts
- (gimp-image-undo-disable img)
- (gimp-image-add-layer img layer 0)
-
- ; Here is where the painting starts. We now have an image
- ; and layer and may paint in the layer through the PDB functions.
- (gimp-palette-set-background color)
- (gimp-edit-fill layer BG-IMAGE-FILL)
-
- ; The following is also done for all script
- (gimp-display-new img)
- (gimp-image-undo-enable img))
-
- ; Finally register our script with script-fu.
- (script-fu-register "uni-img"
- "Uniform image"
- "Creates a uniform image"
- "Dov Grobgeld <dov imagic weizmann ac il>"
- "Dov Grobgeld"
- "2002-02-12"
- ""
- SF-VALUE "size" "100"
- SF-COLOR "color" '(255 127 0))
- (script-fu-menu-register "uni-img" "<Toolbox>/Xtns/Script-Fu/Tutorials")
-
-
-To test the script save it in $HOME/.gimp-2.2/scripts/uni.scm and then select <span class="filter">Xtns ->
Script-Fu -> Refresh</span>:
-
-<figure>
-<img src="{filename}refresh.png" alt="refresh.png" />
-</figure>
-
-The script **Uniform image** should now appear in the pulldown menu <span class="filter">Xtns -> Script-Fu
-> Tutorials -> Uniform image</span>. Selecting this script results in the following popup:
-
-<figure>
-<img src="{filename}uni-img.png" alt="uni-img.png" />
-</figure>
-
-Accepting these default parameters through the **OK** button gives us the following new image:
-
-<figure>
-<img src="{filename}uni-result.png" alt="uni-result.png" />
-</figure>
-
-It is also possible to access this script through the Script-Fu console by typing the command
-
- :::scheme
- (uni-img 100 '(0 255 127))
-
-
-## 6.1 Hanging a script in the image menu
-
-In the **uni-img** script it was placed under **Xtns/...** in the main Gimp window. This is done to create a
new image that is independant of earlier images. It is also possible to create a script which works on an
already existing image. If in **script-fu-menu-register** the second argument is written:
-
-<Image>/Script-Fu/...
-
-then the script will be available through the GIMP menu that is launched by the right mouse button over an
image. Such script must also have as their first and second argument a SF-IMAGE and a SF-DRAWABLE.
-
-Here is an example script which copies the current layer to a new layer, blurs it and inverts it.
-
- :::scheme
- ; An example script that blurs an image according to a blur radius.
- ; It illustrates how to hang a script in the image menu, and
- ; how a plug-in may be called.
-
- (define (script-fu-copy-blur img
- drawable
- blur-radius)
- ; Create a new layer
- (set! new-layer (car (gimp-layer-copy drawable 0)))
-
- ; Give it a name
- (gimp-layer-set-name new-layer "Gauss-blurred")
-
- ; Add the new layer to the image
- (gimp-image-add-layer img new-layer 0)
-
- ; Call a plugin to blur the image
- (plug-in-gauss-rle 1 img new-layer blur-radius 1 1)
-
- ; Invert the new layer
- (gimp-invert new-layer)
-
- ; Flush the display
- (gimp-displays-flush)
- )
-
- (script-fu-register "script-fu-copy-blur"
- "Copy and Blur"
- "Copy and blur a layer"
- "Dov Grobgeld"
- "Dov Grobgeld"
- "2002"
- "RGB*, GRAY*"
- SF-IMAGE "Image" 0
- SF-DRAWABLE "Layer to blur" 0
- SF-VALUE "Blur strength" "5")
- (script-fu-menu-register "script-fu-copy-blur"
- "<Image>/Script-Fu/Tutorials")
-
-
-
-## 7\. Painting areas with selections
-
-In uni-img we called the procedure gimp-edit-fill to fill the whole image. Looking at the info for
gimp-edit-fill in the Procedure Browser we find the following:
-
-<table>
-<tbody>
-<tr>
-<th align="right" valign="top">Name:</th>
-<td class="emphesize" colspan="3">gimp-edit-fill</td>
-</tr>
-<tr>
-<th align="right" valign="top">Blurb:</th>
-<td colspan="3" valign="top">Fill selected area of drawable</td>
-</tr>
-<tr>
-<th align="right" valign="top">In:</th>
-<td valign="top">DRAWABLE</td>
-<td valign="top">drawable</td>
-<td valign="top">The drawable to fill from</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">INT32</td>
-<td valign="top">fill_type</td>
-<td valign="top">The type of fill: FG-IMAGE-FILL (0), BG-IMAGE-FILL (1), WHITE-IMAGE-FILL (2),
TRANS-IMAGE-FILL (3), NO-IMAGE-FILL (4)</td>
-</tr>
-<tr>
-<th valign="top">Help:</th>
-<td colspan="3">This procedure fills the specified drawable with the fill mode. If the fill mode is
foreground, the current foreground color is used. If the fill mode is background, the current background
color is used. Other fill modes should not be used. This procedure only affects regions within a selection if
there is a selection active.</td>
-</tr>
-</tbody>
-</table>
-
-Thus, if we have a selection active when gimp-edit-fill is called, then only the selection is painted. There
are lots of ways of choosing a selection as can be seen when searching for a "select" in the PDB. We will use
gimp-rect-select, whose entry in the PDB looks as follows:
-
-<table>
-<tbody>
-<tr>
-<th align="right" valign="top">Name:</th>
-<td class="emphesize" colspan="3">gimp-rect-select</td>
-</tr>
-<tr>
-<th align="right" valign="top">Blurb:</th>
-<td colspan="3" valign="top">Create a rectangular selection over the specified image</td>
-</tr>
-<tr>
-<th align="right" valign="top">In:</th>
-<td valign="top">IMAGE</td>
-<td valign="top">image</td>
-<td valign="top">The image</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">FLOAT</td>
-<td valign="top">x</td>
-<td valign="top">x coordinate of upper-left corner of rectangle</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">FLOAT</td>
-<td valign="top">y</td>
-<td valign="top">y coordinate of upper-left corner of rectangle</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">FLOAT</td>
-<td valign="top">width</td>
-<td valign="top">the width of the rectangle: width > 0</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">FLOAT</td>
-<td valign="top">height</td>
-<td valign="top">the height of the rectangle: width > 0</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">INT32</td>
-<td valign="top">operation</td>
-<td valign="top">the selection operation: {ADD (0), SUB(1), REPLACE (2), INTERSECT (3) }</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">INT32</td>
-<td valign="top">feather</td>
-<td valign="top">feather option for selections</td>
-</tr>
-<tr>
-<th></th>
-<td valign="top">FLOAT</td>
-<td valign="top">feather_radius</td>
-<td valign="top">radius for feather operation</td>
-</tr>
-<tr>
-<th valign="top">Help:</th>
-<td colspan="3">This tool creates a rectangular selection over the specified image. The rectangular region
can be either added to, subtracted from, or replace the contents of the previous selection mask. If the
feather option is enabled, the resulting selection is blurred before combining. The blur is a gaussian blur
with the specified feather radius.</td>
-</tr>
-</tbody>
-</table>
-
-A simple use of this function which selects the rectangle (x,y,width,height) = (0,25,100,50), paints this
region blue, and releases the selection looks as follows:
-
- :::scheme
- (gimp-rect-select img 0 25 100 50 REPLACE 0 0)
- (gimp-palette-set-background '(0 0 255))
- (gimp-edit-fill layer BG-IMAGE-FILL)
- (gimp-selection-none img)
-
-
-## 8\. Loops
-
-The only looping construct that exists in Script-Fu is **while**
-
-[Note: this constraint is due to the current Scheme interpreter SIOD used for Script-Fu.] The while loop
looks as follows:
-
- :::scheme
- (while (condition)
- (statement1)
- (statement2)
- :
- )
-
-
-Here's an example which draws horizontal lines, 16 pixels high, on an image:
-
- :::scheme
- (set! y 0)
- (while (< y size)
- (gimp-rect-select img 0 y size 16 REPLACE 0 0)
- (gimp-edit-fill layer-one BG-IMAGE-FILL)
- (set! y (+ y 32)))
-
-
-## 9\. Floating selections
-
-When pasting an image from the clipboard, or when creating text in a a drawable, the result is not put
directly in the drawable. Instead it is put into a special temporary layer known as a floating selection. The
floating selection may be manipulated in several ways, and finally it is merged into its associated layer, a
process known as anchoring.
-
-## 9.1 Hello World - writing text in an image
-
-When creating text through the gimp-text command, the text is always put into a temporary layer. This
temporary layer then has to be anchored. Here is an example of creating some text which is pasted into the
current drawable:
-
- :::scheme
- ; An example script that writes a fixed string in the current
- ; image.
- (define (script-fu-hello-world img drawable)
-
- ; Start an undo group. Everything between the start and the end will
- ; be carried out if an undo command is issued.
- (gimp-undo-push-group-start img)
-
- ; Create the text. See the Procedure Browser for parameters of gimp-text.
- (set! text-float (car (gimp-text-fontname img drawable
- 10 10 "Hello world" 0 1 50 0
- "Sans")))
-
- ; Anchor the selection
- (gimp-floating-sel-anchor text-float)
-
- ; Complete the undo group
- (gimp-undo-push-group-end img)
-
- ; Flush output
- (gimp-displays-flush))
-
- (script-fu-register "script-fu-hello-world"
- "Hello World"
- "Write Hello World in the current image"
- "Dov Grobgeld <dov imagic weizmann ac il>"
- "Dov Grobgeld"
- "2002-02-12"
- "RGB*, GRAY*"
- SF-IMAGE "Input Image" 0
- SF-DRAWABLE "Input Drawable" 0)
- (script-fu-menu-register "script-fu-hello-world"
- "<Image>/Script-Fu/Tutorials")
-
-
-This script shows another feature we haven't mentioned before. The possibility of creating an undo group.
All the commands between the commands gimp-undo-push-group-begin and gimp-undo-push-group-end are undone
together if the undo command is issued.
-
-## 9.2 Copying a selection
-
-To copy a selection, the command gimp-edit-copy is used. It places a copy of the selection contents in the
cut-buffer. The contents of the cut-buffer may then be pasted into a layer, the same layer or another one,
and it is then pasted as a floating layer.
-
-In the following example the selection is copied, pasted into the same layer, offset a fixed distance,
finally anchored. Try it by drawing a small blob in the middle of the image, select the blob, and then call
this script.
-
- :::scheme
- ; An example of how to create a floating layer and how to ancor it.
- (define (script-fu-sel-copy img
- drawable)
-
- (gimp-undo-push-group-start img)
- (gimp-edit-copy drawable)
- (set! sel-float (car (gimp-edit-paste drawable FALSE)))
- (gimp-layer-set-offsets sel-float 100 50)
-
- ; Anchor the selection
- (gimp-floating-sel-anchor sel-float)
-
- ; Complete the undo group
- (gimp-undo-push-group-end img)
-
- ; Flush output
- (gimp-displays-flush))
-
- (script-fu-register "script-fu-sel-copy"
- "Selection Copy"
- "Copy the selection into the same layer"
- "Dov Grobgeld"
- "Dov Grobgeld"
- "2002-02-12"
- "RGB*, GRAY*"
- SF-IMAGE "Image" 0
- SF-DRAWABLE "Layer" 0)
- (script-fu-menu-register "script-fu-sel-copy"
- "<Image>/Script-Fu/Tutorials")
-
-
-The original tutorial can be found [here](http://imagic.weizmann.ac.il/~dov/gimp/scheme-tut.html).
-
-
-<style>
-table {
-max-width: 40rem;
-font-size: 0.85rem;
-margin: 1rem auto;
-}
-table td, table th{
- padding: 0.25rem;
-}
-</style>
+Title: Basic Scheme
+Date: 2015-08-18T16:27:00-05:00
+Modified: 2015-08-18T16:27:04-05:00
+Author: Dov Grobgeld
+
+
+Text and images Copyright (C) 2002 [Dov Grobgeld](mailto:dovNOSPAM imagic weizmann ac il) and may not be
used without permission of the author.
+
+_Editor's note: since this tutorial was published, the old GIMP Script-Fu interpreter (SIOD) has been
replaced by a newer and better one (TinyScheme). A [Script-Fu migration guide](/docs/script-fu-update.html)
is available._
+
+## Intention
+
+One of the wonderful features of GIMP is that it all its functionality may be accessed through scripting.
The major scripting language for GIMP that has been attached to it today is Scheme. This document will try to
be a brief introduction to Scheme, just teaching the essentials in order to write Script-Fu scripts, without
getting into the programming language theory that is so typical of other Scheme references.
+
+## 1\. Expressions
+
+Scheme is a Lisp variant and all expressions are surrounded by parentheses. E.g. a list which will calculate
the sum of 3 and 4 is written
+
+ :::scheme
+ (+ 3 4)
+
+
+The + sign is the addition function and 3 and 4 are the first and second parameters to this function.
Expressions may be nested, so the expression (3+4)*(5/6) would in Scheme be written
+
+ :::scheme
+ (* (+ 3 4) (/ 5 6))
+
+
+White space has no importance so the above expression may as well be written:
+
+ :::scheme
+ (*
+ (+ 3 4)
+ (/ 5 6))
+
+
+## 2\. Functions
+
+Aside from the four arithmetic functions that are represented through the symbols + - * / there are lots of
other functions built into the language. All of them have the form
+
+ :::scheme
+ (foo param1 param2 ...)
+
+
+Additional functions may be defined by the user through the define keyword. E.g. a function that calculates
the square value of its single argument may be declared like this
+
+ :::scheme
+ (define (square x) (* x x))
+
+
+and this function may be called through
+
+ :::scheme
+ (square 5)
+
+
+## 3\. Variables and lists
+
+Variables may be declared and set through the set! command. (These variables will be global but this should
not bother the casual GIMP programmer). Here are a couple of assignments:
+
+ :::scheme
+ (set! grey_value 85)
+ (set! angle (* (/ 30 180) 3.141)
+
+
+Lisp and its variants make heavy use of lists. Script-Fu is no exception and it uses e.g. a list of three
elements to write a RGB color. E.g. the color orange would be written
+
+ :::scheme
+ '(255 127 0)
+
+
+The ' sign is necessary in order to tell Scheme that this is a literal list. If the ' was omitted Scheme
would try to look up a function with the name 255 and send it the two parameters 127 and 0, which is
obviously not what we want.
+
+To create a variable called orange with the above value and then set the background color to it we may do
+
+ :::scheme
+ (set! orange '(255 127 0))
+ (gimp-set-background-color orange)
+
+
+## 3.1 car, cdr and friends (*)
+
+A list in Scheme is always composed of a head and a tail. The head is the first entry in the list, and the
tail is the rest of the elements in the list. This means that the list (255 127 63) really means (255 (127
(63 ()))) but Scheme allows the previous form as a shortcut. The car function is used to return the head of
the list and the cdr (usually pronounced cudder) is used to get the tail of the list.
+
+[The following is a test of the above functions which may be interactively conducted in the Script-Fu
console.]
+
+ :::scheme
+ => (set! color '(255 127 63))
+ (255 127 63)
+ => (car color)
+ 255
+ => (cdr color)
+ (127 63)
+
+
+To get the blue component of a color it is necessary to apply the cdr function twice and then the car
function.
+
+ :::scheme
+ => (car (cdr (cdr color)))
+ 63
+
+
+This is very inconvenient to write. Therefore there have been defined abreviations of the form cadr, cddr,
caddr, etc that concatenate the operations described above. The previous expression may therefore be much
more conveniently written:
+
+ :::scheme
+ => (caddr color)
+ 63
+
+
+For the Script-Fu writer one of the most important uses of the car function is to access the returned values
from the built-in GIMP functions. All gimp-functions return a list, and even if the list contains only one
element it must be accessed by car. This is e.g. the case for the important functions gimp-new-image and
gimp-new-layer used below.
+
+## 3.2 Local variables (*)
+
+More experienced Scheme programmers mostly use local variables instead of the global variables described
above. This is considered better programming practice and this construct should be recognized in order to be
able to read others Script-Fu scripts.
+
+Local variables are declared through the the let keyword as in the following example:
+
+ :::scheme
+ (let* ((a 3)
+ (b 4))
+ ((* a b)))
+
+
+Here a and b have a local scope and retain their values only up to the closing paren matching the one before
let\* .
+
+## 4\. The GIMP PDB
+
+All functionality of GIMP is available through the procedural database (PDB). Each procedural database
function has a corresponding Scheme function mapping. E.g.
+
+ :::scheme
+ (gimp-image-new 100 150 RGB)
+
+
+produces a new GIMP image of type RGB and size 100x150.
+
+All the functions of the PDB may be accessed through the Procedure Browser that is available from the main
menu through <span class="filter">Xtns ->Procedure Browser</span>.... E.g. the Procedure Browser entry for
uni-img, which we will define in the example below looks like this:
+
+<figure>
+<img src="{filename}pdb-uni-entry.png" alt="pdb-uni-entry.png" />
+</figure>
+
+For the Script-Fu programmer this information shows that uni-img may be called with three parameters of the
types INT32, STRING and COLOR. The different types will be explained below.
+
+## 5\. Registering the script with Script-Fu
+
+After a function has been written it has to be registered with Script-Fu before it can be used. This is done
through the Scheme function script-fu-register. The registering has following purposes:
+
+1. Tell Script-Fu the type of parameters the script takes and give these parameters default values.
+2. Give the script a name to be used as the menu label.
+3. Register the script as a command in the PDB.
+
+The last point above actually means that a script is from Gimp's viewpoint in no way different from a
built-in command or a plugin command. As long as a command is registered in the PDB it can be called by any
script or plugin.
+
+The parameters of script-fu-register may be divided into two groups. The first group of seven parameters
must always be given. These are:
+
+1. The name of the function.
+2. The name of the script to be used as a menu entry.
+3. A help string describing the function of the script.
+4. The script author.
+5. The script copyright.
+6. Script date.
+7. List of valid image types for the script. This only has a meaning on scripts operating on images that
already exist.
+
+After these seven parameters have been given, a list of the parameters required by the script follows. Each
parameter is given as a group of three items:
+
+1. The type of the parameter. Some of the valid types are:
+
+ <dl>
+
+ <dt>**SF-COLOR**</dt>
+
+ <dd>An RGB color.</dd>
+
+ <dt>**SF-TOGGLE**</dt>
+
+ <dd>A true or false value.</dd>
+
+ <dt>**SF-STRING**</dt>
+
+ <dd>A string of characters enclosed in double quotes.</dd>
+
+ <dt>**SF-VALUE**</dt>
+
+ <dd>Any scalar value, integer, or floating point.</dd>
+
+ <dt>**SF-IMAGE**</dt>
+
+ <dt>**SF-DRAWABLE**</dt>
+
+ </dl>
+
+2. A label for Script-Fu to display when querying for the parameter.
+3. A default value.
+
+## 6\. A commented script
+
+The following script **uni.scm** receives two parameters from the user, the size of the image and a color,
and goes on to produce a uniform image of the requested size and the requested color. Not very useful, but it
shows the essential steps in producing a Script-Fu script.
+
+ :::scheme
+ ; Define the function of the script and list its parameters
+ ; The parameters will be matched with the parameters listed
+ ; below in script-fu-register.
+
+ (define (uni-img size color)
+ ; Create an img and a layer
+ (set! img (car (gimp-image-new size size RGB)))
+ (set! layer (car (gimp-layer-new img size size
+ RGB "layer 1" 100 NORMAL)))
+
+ ; The following is done for all scripts
+ (gimp-image-undo-disable img)
+ (gimp-image-add-layer img layer 0)
+
+ ; Here is where the painting starts. We now have an image
+ ; and layer and may paint in the layer through the PDB functions.
+ (gimp-palette-set-background color)
+ (gimp-edit-fill layer BG-IMAGE-FILL)
+
+ ; The following is also done for all script
+ (gimp-display-new img)
+ (gimp-image-undo-enable img))
+
+ ; Finally register our script with script-fu.
+ (script-fu-register "uni-img"
+ "Uniform image"
+ "Creates a uniform image"
+ "Dov Grobgeld <dov imagic weizmann ac il>"
+ "Dov Grobgeld"
+ "2002-02-12"
+ ""
+ SF-VALUE "size" "100"
+ SF-COLOR "color" '(255 127 0))
+ (script-fu-menu-register "uni-img" "<Toolbox>/Xtns/Script-Fu/Tutorials")
+
+
+To test the script save it in $HOME/.gimp-2.2/scripts/uni.scm and then select <span class="filter">Xtns ->
Script-Fu -> Refresh</span>:
+
+<figure>
+<img src="{filename}refresh.png" alt="refresh.png" />
+</figure>
+
+The script **Uniform image** should now appear in the pulldown menu <span class="filter">Xtns -> Script-Fu
-> Tutorials -> Uniform image</span>. Selecting this script results in the following popup:
+
+<figure>
+<img src="{filename}uni-img.png" alt="uni-img.png" />
+</figure>
+
+Accepting these default parameters through the **OK** button gives us the following new image:
+
+<figure>
+<img src="{filename}uni-result.png" alt="uni-result.png" />
+</figure>
+
+It is also possible to access this script through the Script-Fu console by typing the command
+
+ :::scheme
+ (uni-img 100 '(0 255 127))
+
+
+## 6.1 Hanging a script in the image menu
+
+In the **uni-img** script it was placed under **Xtns/...** in the main Gimp window. This is done to create a
new image that is independant of earlier images. It is also possible to create a script which works on an
already existing image. If in **script-fu-menu-register** the second argument is written:
+
+<Image>/Script-Fu/...
+
+then the script will be available through the GIMP menu that is launched by the right mouse button over an
image. Such script must also have as their first and second argument a SF-IMAGE and a SF-DRAWABLE.
+
+Here is an example script which copies the current layer to a new layer, blurs it and inverts it.
+
+ :::scheme
+ ; An example script that blurs an image according to a blur radius.
+ ; It illustrates how to hang a script in the image menu, and
+ ; how a plug-in may be called.
+
+ (define (script-fu-copy-blur img
+ drawable
+ blur-radius)
+ ; Create a new layer
+ (set! new-layer (car (gimp-layer-copy drawable 0)))
+
+ ; Give it a name
+ (gimp-layer-set-name new-layer "Gauss-blurred")
+
+ ; Add the new layer to the image
+ (gimp-image-add-layer img new-layer 0)
+
+ ; Call a plugin to blur the image
+ (plug-in-gauss-rle 1 img new-layer blur-radius 1 1)
+
+ ; Invert the new layer
+ (gimp-invert new-layer)
+
+ ; Flush the display
+ (gimp-displays-flush)
+ )
+
+ (script-fu-register "script-fu-copy-blur"
+ "Copy and Blur"
+ "Copy and blur a layer"
+ "Dov Grobgeld"
+ "Dov Grobgeld"
+ "2002"
+ "RGB*, GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Layer to blur" 0
+ SF-VALUE "Blur strength" "5")
+ (script-fu-menu-register "script-fu-copy-blur"
+ "<Image>/Script-Fu/Tutorials")
+
+
+
+## 7\. Painting areas with selections
+
+In uni-img we called the procedure gimp-edit-fill to fill the whole image. Looking at the info for
gimp-edit-fill in the Procedure Browser we find the following:
+
+<table>
+<tbody>
+<tr>
+<th align="right" valign="top">Name:</th>
+<td class="emphesize" colspan="3">gimp-edit-fill</td>
+</tr>
+<tr>
+<th align="right" valign="top">Blurb:</th>
+<td colspan="3" valign="top">Fill selected area of drawable</td>
+</tr>
+<tr>
+<th align="right" valign="top">In:</th>
+<td valign="top">DRAWABLE</td>
+<td valign="top">drawable</td>
+<td valign="top">The drawable to fill from</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">INT32</td>
+<td valign="top">fill_type</td>
+<td valign="top">The type of fill: FG-IMAGE-FILL (0), BG-IMAGE-FILL (1), WHITE-IMAGE-FILL (2),
TRANS-IMAGE-FILL (3), NO-IMAGE-FILL (4)</td>
+</tr>
+<tr>
+<th valign="top">Help:</th>
+<td colspan="3">This procedure fills the specified drawable with the fill mode. If the fill mode is
foreground, the current foreground color is used. If the fill mode is background, the current background
color is used. Other fill modes should not be used. This procedure only affects regions within a selection if
there is a selection active.</td>
+</tr>
+</tbody>
+</table>
+
+Thus, if we have a selection active when gimp-edit-fill is called, then only the selection is painted. There
are lots of ways of choosing a selection as can be seen when searching for a "select" in the PDB. We will use
gimp-rect-select, whose entry in the PDB looks as follows:
+
+<table>
+<tbody>
+<tr>
+<th align="right" valign="top">Name:</th>
+<td class="emphesize" colspan="3">gimp-rect-select</td>
+</tr>
+<tr>
+<th align="right" valign="top">Blurb:</th>
+<td colspan="3" valign="top">Create a rectangular selection over the specified image</td>
+</tr>
+<tr>
+<th align="right" valign="top">In:</th>
+<td valign="top">IMAGE</td>
+<td valign="top">image</td>
+<td valign="top">The image</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">FLOAT</td>
+<td valign="top">x</td>
+<td valign="top">x coordinate of upper-left corner of rectangle</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">FLOAT</td>
+<td valign="top">y</td>
+<td valign="top">y coordinate of upper-left corner of rectangle</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">FLOAT</td>
+<td valign="top">width</td>
+<td valign="top">the width of the rectangle: width > 0</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">FLOAT</td>
+<td valign="top">height</td>
+<td valign="top">the height of the rectangle: width > 0</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">INT32</td>
+<td valign="top">operation</td>
+<td valign="top">the selection operation: {ADD (0), SUB(1), REPLACE (2), INTERSECT (3) }</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">INT32</td>
+<td valign="top">feather</td>
+<td valign="top">feather option for selections</td>
+</tr>
+<tr>
+<th></th>
+<td valign="top">FLOAT</td>
+<td valign="top">feather_radius</td>
+<td valign="top">radius for feather operation</td>
+</tr>
+<tr>
+<th valign="top">Help:</th>
+<td colspan="3">This tool creates a rectangular selection over the specified image. The rectangular region
can be either added to, subtracted from, or replace the contents of the previous selection mask. If the
feather option is enabled, the resulting selection is blurred before combining. The blur is a gaussian blur
with the specified feather radius.</td>
+</tr>
+</tbody>
+</table>
+
+A simple use of this function which selects the rectangle (x,y,width,height) = (0,25,100,50), paints this
region blue, and releases the selection looks as follows:
+
+ :::scheme
+ (gimp-rect-select img 0 25 100 50 REPLACE 0 0)
+ (gimp-palette-set-background '(0 0 255))
+ (gimp-edit-fill layer BG-IMAGE-FILL)
+ (gimp-selection-none img)
+
+
+## 8\. Loops
+
+The only looping construct that exists in Script-Fu is **while**
+
+[Note: this constraint is due to the current Scheme interpreter SIOD used for Script-Fu.] The while loop
looks as follows:
+
+ :::scheme
+ (while (condition)
+ (statement1)
+ (statement2)
+ :
+ )
+
+
+Here's an example which draws horizontal lines, 16 pixels high, on an image:
+
+ :::scheme
+ (set! y 0)
+ (while (< y size)
+ (gimp-rect-select img 0 y size 16 REPLACE 0 0)
+ (gimp-edit-fill layer-one BG-IMAGE-FILL)
+ (set! y (+ y 32)))
+
+
+## 9\. Floating selections
+
+When pasting an image from the clipboard, or when creating text in a a drawable, the result is not put
directly in the drawable. Instead it is put into a special temporary layer known as a floating selection. The
floating selection may be manipulated in several ways, and finally it is merged into its associated layer, a
process known as anchoring.
+
+## 9.1 Hello World - writing text in an image
+
+When creating text through the gimp-text command, the text is always put into a temporary layer. This
temporary layer then has to be anchored. Here is an example of creating some text which is pasted into the
current drawable:
+
+ :::scheme
+ ; An example script that writes a fixed string in the current
+ ; image.
+ (define (script-fu-hello-world img drawable)
+
+ ; Start an undo group. Everything between the start and the end will
+ ; be carried out if an undo command is issued.
+ (gimp-undo-push-group-start img)
+
+ ; Create the text. See the Procedure Browser for parameters of gimp-text.
+ (set! text-float (car (gimp-text-fontname img drawable
+ 10 10 "Hello world" 0 1 50 0
+ "Sans")))
+
+ ; Anchor the selection
+ (gimp-floating-sel-anchor text-float)
+
+ ; Complete the undo group
+ (gimp-undo-push-group-end img)
+
+ ; Flush output
+ (gimp-displays-flush))
+
+ (script-fu-register "script-fu-hello-world"
+ "Hello World"
+ "Write Hello World in the current image"
+ "Dov Grobgeld <dov imagic weizmann ac il>"
+ "Dov Grobgeld"
+ "2002-02-12"
+ "RGB*, GRAY*"
+ SF-IMAGE "Input Image" 0
+ SF-DRAWABLE "Input Drawable" 0)
+ (script-fu-menu-register "script-fu-hello-world"
+ "<Image>/Script-Fu/Tutorials")
+
+
+This script shows another feature we haven't mentioned before. The possibility of creating an undo group.
All the commands between the commands gimp-undo-push-group-begin and gimp-undo-push-group-end are undone
together if the undo command is issued.
+
+## 9.2 Copying a selection
+
+To copy a selection, the command gimp-edit-copy is used. It places a copy of the selection contents in the
cut-buffer. The contents of the cut-buffer may then be pasted into a layer, the same layer or another one,
and it is then pasted as a floating layer.
+
+In the following example the selection is copied, pasted into the same layer, offset a fixed distance,
finally anchored. Try it by drawing a small blob in the middle of the image, select the blob, and then call
this script.
+
+ :::scheme
+ ; An example of how to create a floating layer and how to ancor it.
+ (define (script-fu-sel-copy img
+ drawable)
+
+ (gimp-undo-push-group-start img)
+ (gimp-edit-copy drawable)
+ (set! sel-float (car (gimp-edit-paste drawable FALSE)))
+ (gimp-layer-set-offsets sel-float 100 50)
+
+ ; Anchor the selection
+ (gimp-floating-sel-anchor sel-float)
+
+ ; Complete the undo group
+ (gimp-undo-push-group-end img)
+
+ ; Flush output
+ (gimp-displays-flush))
+
+ (script-fu-register "script-fu-sel-copy"
+ "Selection Copy"
+ "Copy the selection into the same layer"
+ "Dov Grobgeld"
+ "Dov Grobgeld"
+ "2002-02-12"
+ "RGB*, GRAY*"
+ SF-IMAGE "Image" 0
+ SF-DRAWABLE "Layer" 0)
+ (script-fu-menu-register "script-fu-sel-copy"
+ "<Image>/Script-Fu/Tutorials")
+
+
+The original tutorial can be found [here](http://imagic.weizmann.ac.il/~dov/gimp/scheme-tut.html).
+
+
+<style>
+table {
+max-width: 40rem;
+font-size: 0.85rem;
+margin: 1rem auto;
+}
+table td, table th{
+ padding: 0.25rem;
+}
+</style>
diff --git a/content/tutorials/Basic_Scheme2/index.md b/content/tutorials/Basic_Scheme2/index.md
index 6441868..5ab514c 100644
--- a/content/tutorials/Basic_Scheme2/index.md
+++ b/content/tutorials/Basic_Scheme2/index.md
@@ -1,151 +1,151 @@
-Title: Basic Scheme 2
-Date: 2015-08-18T16:27:00-05:00
-Modified: 2015-08-18T16:27:04-05:00
-Author: Pat David
-
-
-This article was originally published in [Linux Magazine, January
2002](http://www.linux-mag.com/2002-01/power_01.html).
-
-_Editor's note: since this tutorial was published, the old GIMP Script-Fu interpreter (SIOD) has been
replaced by a newer and better one (TinyScheme). A [Script-Fu migration guide](/docs/script-fu-update.html)
is available._
-
-## Intention
-
-Unix (and by association, GNU/Linux) provides the user with an environment full of possibilities. To turn
these possibilities into reality, a Unix user must be technical in two senses of the word. Of course, he must
understand _technology_, but to really shine, he must understand and even appreciate good _technique_.
-
-Unix is filled with tools that, through an unspoken yet common understanding of the Unix Philosophy, work
well with each other. To the creative user who can interconnect and combine these powerful tools, Unix can be
very rewarding.
-
-With that in mind, welcome to our _Power Tools_ column. Our goal here is to help you discover different ways
to get the most out of all the useful software that is out there, and to demonstrate how powerful these tools
can really be in the hands of a skillful and technical user.
-
-We begin this month with a look at GIMP. One of GIMP's strong points has always been its scriptability. In
fact, it's widely acknowledged to be one of the cooler features of GIMP. But when it comes right down to it,
there really are not that many people who can honestly say, "I know Script-Fu."
-
-Part of the problem is Scheme, the language used to write scripts for GIMP. It is a Lisp-like language that
looks funny compared to most mainstream languages, and that's enough to dissuade a lot of people from trying
it. For anyone who really wants to learn Scheme, though, GIMP is a good place to start, because you'll be
able to achieve useful results relatively quickly due to the richness of its programming interface. Sometimes
it's a little too rich, though.
-
-The other problem is that the API for GIMP can seem overwhelmingly large at times. Fortunately, there's a
way to break down this formidable API into something that is actually comprehensible by mere mortals. But
we'll get to that in a minute. First, let's take a look at a very small subset of Scheme.
-
-## A Crash Course in Scheme
-
-Scheme has a simple and uniform syntax compared to most other languages, but there's still no way to
properly explain it in this limited space. With that in mind, we'll cover the bare minimum of Scheme that
you'll need to get started with GIMP scripting. Fortunately, it's true that a little knowledge can go a long
way, so if you don't know Scheme, read on.
-
-The first thing people notice when they look at Scheme is all the nested parentheses. Whatever you do, don't
panic. There's a very simple concept behind this, and chances are good that you already understand it.
Semantically, it's not that different from HTML. For example, the following:
-
- :::html
- <ul><li><b>bold</b></li><li><i>italic</i></li></ul>
-
-
-would look like this in Scheme:
-
- :::scheme
- (ul (li (b "bold"))(li (i "italic")))
-
-Each matching pair of parentheses forms what is called an s-expression. The "s" stands for "symbolic,"
because s-expressions usually contain symbolic information (like function and variable names) inside them.
Literal information (like strings or numbers) is represented in the usual way -- numbers are written in
decimal notation, and strings are surrounded by a set of double quotes, like "bold" is in the example. An
s-expression can also contain other s-expressions nested within it, making it a good notation for storing
data as well as writing code.
-
-When you are using s-expressions to represent code, the first item represents the function you want to use,
and everything after it is considered a parameter of the function. What surprises many people is that in
Scheme, nearly _everything_ is done with a function. Even for basic math, what would be:
-
- 5 + 9 / 3
-
-in most other languages is expressed in Scheme as:
-
- :::scheme
- (+ 5 (/ 9 3))
-
-This may take a little getting used to. First, the order of things may look strange. If you're used to
"infix notation" (i.e., the way the first equation is written -- with the operands being separated by the
operators), then training yourself to use "prefix notation" (the way the second equation is written -- with
the operators placed before the operands) might take a little practice. Don't worry -- it's not as unsettling
as it looks once you get the hang of it.
-
-Beyond our simple arithmetic example above, there are two functions in Scheme that you will need to know to
help you understand the latter half of this article.
-
-**set!:** This is the equivalent of the = (or assignment) operator which is seen in most other languages.
Its purpose is simply to assign a given value to a particular variable. For example, the following assigns 5
to the variable a and the list of numbers (1 2 3) to b.
-
- :::scheme
- (set! a 5)<
- (set! b '(1 2 3))
-
-Note that the single-quote before the (1 2 3) is very important. It tells Scheme that the following
s-expression is actually data and not code. Without the single-quote, the Scheme interpreter would have tried
to treat the 1 as a function and failed miserably.
-
-**car:** An s-expression is a list of things, but this is no ordinary list. In Scheme, lists are composed of
only two things -- a _head_, which is the first item in the list, and a _tail_, which is everything else (and
which is also a list).
-
-car is the function used to grab the head of a list. For example, (car '(3 2 1)) returns 3\. This is very
useful, because functions in the GIMP API almost always return lists; even when only one thing is returned,
it's returned in a one-element list, so it's necessary to know this basic list operation.
-
-This is barely a scratch on the surface of what Scheme provides, but it's enough for now. There are already
many good Scheme tutorials out there anyway, so why not make the most of them? You can take a look at
_Resources_ for more information.
-
-## The GIMP API
-
-Now that we know a little Scheme, we can start taking a look at how it is applied to GIMP.
-
-The easiest way to do this is to use the _Procedure Browser_, which is available under (<span
class="filter">Xtns→Procedure Browser</span>). As you can see, GIMP has literally hundreds of Scheme
functions tied directly to its internal API.
-
-Although each function is documented, the sheer number of them can be overwhelming. Fortunately, there's a
nice trick to learning this API.
-
-In the _Procedure Browser_, type the word "new" into the text input box in the bottom left corner and then
click on the _Search by Name_ button. The list should be much smaller now; the first five functions happen to
be especially interesting. This search is demonstrated in _Figure One below_
-
-<figure>
-<img src="{filename}power_01.jpg" alt="Figure One" />
-<figcaption>
-Figure One: The five constructor functions are listed in the top left of the window.
-</figcaption>
-</figure>
-
-These five functions are constructors for the five objects that the entire GIMP API revolves around. If you
can understand exactly what each of these objects represents, then you are well on your way to being able to
script GIMP.
-
-Let's get started by instantiating some of these objects. Be sure to get a Script-Fu console from (<span
class="filter">Xtns → Script-Fu → Console</span>) so that there is a place for you to type in
Scheme code. Now, let's start by following along with _Listing One_.
-
- :::scheme
- ; create an image
- (set! image (car (gimp-image-new 320 240 RGB)))
-
- ; images need layers
- (set! layer
- (car
- (gimp-layer-new
- image 320 240 RGB_IMAGE "layer" 100.0 0)))
- (gimp-image-add-layer image layer -1)
-
- ; display our image
- (set! window (car (gimp-display-new image)))
- (gimp-edit-clear layer)
-
- ; let's draw
- (set! points (cons-array 4 'double))
- (aset points 0 0) ; (x0, y0)
- (aset points 1 0)
- (aset points 2 320) ; (x1, y1)
- (aset points 3 240)
- (gimp-palette-set-foreground '(255 0 0))
- (gimp-paintbrush-default layer 4 points)
-
-**Image:** The most important object in GIMP is the _Image_ object, without which there would be no "I" in
"GIMP." On line 2, a 320x240 pixel, RGB image is instantiated and assigned to <small>image</small>.
-
-GIMP has an abstract concept of what an _Image_ object is. Aside from having properties like width and
height, an image can be thought of as a collection of _Layer_ objects.
-
-**Layer:** Layers are very important because without them, there would be nothing to draw on. On lines 5
through 9, a _Layer_ object is instantiated and then layer is added to <small>image</small>.
-
-**Channel:** The purpose of channels is to provide a selective view of the coloration of an image. For
instance, all RGB images come with a red, green, and blue channel.
-
-If you wanted to affect only the "blueness" of an image, you could disable the red and green channels and
only draw on the blue channel. It's a useful but rather advanced concept, so we'll skip this one for now.
-
-**Display:** Although not strictly required, it would be nice to be able to watch our <small>image</small>
as graphics are being drawn on it. To do this, a _Display_ object is opened on line 12\. Our layer might be
filled with garbage, so it's a good idea to use the <small>gimp-edit-clear</small> function to ensure that we
start with a clean slate. (Hopefully, the layer constructor will behave more consistently in the future.)
Note that as you write Scheme code into the Script-Fu Console, changes in the image will show up
interactively.
-
-**Drawable:** In C++ terminology, a _Drawable_ would be an abstract base class which _Layer_ and _Channel_
are subclasses of. As the name implies, drawables are anything that can be drawn on. For example, one can
draw on channels to perform advanced color effects. But for now we'll just stick to drawing on a layer.
-
-There are many, many functions in the GIMP API for manipulating drawables. On lines 16 to 22,
<small>gimp-paintbrush-default</small> is used to draw a line on <small>layer</small>. Since this function
needs an array of (x,y) coordinates, the <small>cons-array</small> function is used to allocate an array of
doubles and the <small>aset</small> function is used to fill it with values. Before the line is drawn, we
change our default foreground color to a bright red using <small>gimp-palette-set-foreground</small>. If
you've typed everything in correctly, you should have something that looks like _Figure Two showed below_.
-
-<figure>
-<img src="{filename}power_02.jpg" alt="power_02.jpg" />
-<figcaption>
-Figure Two: A simple drawing.
-<figcaption>
-</figure>
-
-
-## Bigger and Better Things...
-
-Now that we have a foundation of knowledge to work from, we can move on to more interesting topics. Study
Scheme and GIMP on your own. See _Resources_ for good places to start your self-education.
-
-## Resources
-
-* [Teach Yourself Scheme in Fixnum Days](http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html)
-* [Mike Terry's Black Belt School of Script-Fu](http://www.klaban.torun.pl/help/script-fu-tutorial/)
-* Richard Stallman: [The
Coder](http://web.archive.org/web/*/http://www.linuxcare.com/viewpoints/os-interviews/12-14-99.epl) (web
archive)
-* [Why Functional Programming Matters](http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html)
-* [SIOD Scheme](http://web.archive.org/web/20011129110930/http://people.delphi.com/gjc/siod.html) (web
archive)
-
-This article was originally published in [Linux Magazine, January
2002](http://www.linux-mag.com/2002-01/power_01.html). It has since then seen some minor updates.
-
+Title: Basic Scheme 2
+Date: 2015-08-18T16:27:00-05:00
+Modified: 2015-08-18T16:27:04-05:00
+Author: Pat David
+
+
+This article was originally published in [Linux Magazine, January
2002](http://www.linux-mag.com/2002-01/power_01.html).
+
+_Editor's note: since this tutorial was published, the old GIMP Script-Fu interpreter (SIOD) has been
replaced by a newer and better one (TinyScheme). A [Script-Fu migration guide](/docs/script-fu-update.html)
is available._
+
+## Intention
+
+Unix (and by association, GNU/Linux) provides the user with an environment full of possibilities. To turn
these possibilities into reality, a Unix user must be technical in two senses of the word. Of course, he must
understand _technology_, but to really shine, he must understand and even appreciate good _technique_.
+
+Unix is filled with tools that, through an unspoken yet common understanding of the Unix Philosophy, work
well with each other. To the creative user who can interconnect and combine these powerful tools, Unix can be
very rewarding.
+
+With that in mind, welcome to our _Power Tools_ column. Our goal here is to help you discover different ways
to get the most out of all the useful software that is out there, and to demonstrate how powerful these tools
can really be in the hands of a skillful and technical user.
+
+We begin this month with a look at GIMP. One of GIMP's strong points has always been its scriptability. In
fact, it's widely acknowledged to be one of the cooler features of GIMP. But when it comes right down to it,
there really are not that many people who can honestly say, "I know Script-Fu."
+
+Part of the problem is Scheme, the language used to write scripts for GIMP. It is a Lisp-like language that
looks funny compared to most mainstream languages, and that's enough to dissuade a lot of people from trying
it. For anyone who really wants to learn Scheme, though, GIMP is a good place to start, because you'll be
able to achieve useful results relatively quickly due to the richness of its programming interface. Sometimes
it's a little too rich, though.
+
+The other problem is that the API for GIMP can seem overwhelmingly large at times. Fortunately, there's a
way to break down this formidable API into something that is actually comprehensible by mere mortals. But
we'll get to that in a minute. First, let's take a look at a very small subset of Scheme.
+
+## A Crash Course in Scheme
+
+Scheme has a simple and uniform syntax compared to most other languages, but there's still no way to
properly explain it in this limited space. With that in mind, we'll cover the bare minimum of Scheme that
you'll need to get started with GIMP scripting. Fortunately, it's true that a little knowledge can go a long
way, so if you don't know Scheme, read on.
+
+The first thing people notice when they look at Scheme is all the nested parentheses. Whatever you do, don't
panic. There's a very simple concept behind this, and chances are good that you already understand it.
Semantically, it's not that different from HTML. For example, the following:
+
+ :::html
+ <ul><li><b>bold</b></li><li><i>italic</i></li></ul>
+
+
+would look like this in Scheme:
+
+ :::scheme
+ (ul (li (b "bold"))(li (i "italic")))
+
+Each matching pair of parentheses forms what is called an s-expression. The "s" stands for "symbolic,"
because s-expressions usually contain symbolic information (like function and variable names) inside them.
Literal information (like strings or numbers) is represented in the usual way -- numbers are written in
decimal notation, and strings are surrounded by a set of double quotes, like "bold" is in the example. An
s-expression can also contain other s-expressions nested within it, making it a good notation for storing
data as well as writing code.
+
+When you are using s-expressions to represent code, the first item represents the function you want to use,
and everything after it is considered a parameter of the function. What surprises many people is that in
Scheme, nearly _everything_ is done with a function. Even for basic math, what would be:
+
+ 5 + 9 / 3
+
+in most other languages is expressed in Scheme as:
+
+ :::scheme
+ (+ 5 (/ 9 3))
+
+This may take a little getting used to. First, the order of things may look strange. If you're used to
"infix notation" (i.e., the way the first equation is written -- with the operands being separated by the
operators), then training yourself to use "prefix notation" (the way the second equation is written -- with
the operators placed before the operands) might take a little practice. Don't worry -- it's not as unsettling
as it looks once you get the hang of it.
+
+Beyond our simple arithmetic example above, there are two functions in Scheme that you will need to know to
help you understand the latter half of this article.
+
+**set!:** This is the equivalent of the = (or assignment) operator which is seen in most other languages.
Its purpose is simply to assign a given value to a particular variable. For example, the following assigns 5
to the variable a and the list of numbers (1 2 3) to b.
+
+ :::scheme
+ (set! a 5)<
+ (set! b '(1 2 3))
+
+Note that the single-quote before the (1 2 3) is very important. It tells Scheme that the following
s-expression is actually data and not code. Without the single-quote, the Scheme interpreter would have tried
to treat the 1 as a function and failed miserably.
+
+**car:** An s-expression is a list of things, but this is no ordinary list. In Scheme, lists are composed of
only two things -- a _head_, which is the first item in the list, and a _tail_, which is everything else (and
which is also a list).
+
+car is the function used to grab the head of a list. For example, (car '(3 2 1)) returns 3\. This is very
useful, because functions in the GIMP API almost always return lists; even when only one thing is returned,
it's returned in a one-element list, so it's necessary to know this basic list operation.
+
+This is barely a scratch on the surface of what Scheme provides, but it's enough for now. There are already
many good Scheme tutorials out there anyway, so why not make the most of them? You can take a look at
_Resources_ for more information.
+
+## The GIMP API
+
+Now that we know a little Scheme, we can start taking a look at how it is applied to GIMP.
+
+The easiest way to do this is to use the _Procedure Browser_, which is available under (<span
class="filter">Xtns→Procedure Browser</span>). As you can see, GIMP has literally hundreds of Scheme
functions tied directly to its internal API.
+
+Although each function is documented, the sheer number of them can be overwhelming. Fortunately, there's a
nice trick to learning this API.
+
+In the _Procedure Browser_, type the word "new" into the text input box in the bottom left corner and then
click on the _Search by Name_ button. The list should be much smaller now; the first five functions happen to
be especially interesting. This search is demonstrated in _Figure One below_
+
+<figure>
+<img src="{filename}power_01.jpg" alt="Figure One" />
+<figcaption>
+Figure One: The five constructor functions are listed in the top left of the window.
+</figcaption>
+</figure>
+
+These five functions are constructors for the five objects that the entire GIMP API revolves around. If you
can understand exactly what each of these objects represents, then you are well on your way to being able to
script GIMP.
+
+Let's get started by instantiating some of these objects. Be sure to get a Script-Fu console from (<span
class="filter">Xtns → Script-Fu → Console</span>) so that there is a place for you to type in
Scheme code. Now, let's start by following along with _Listing One_.
+
+ :::scheme
+ ; create an image
+ (set! image (car (gimp-image-new 320 240 RGB)))
+
+ ; images need layers
+ (set! layer
+ (car
+ (gimp-layer-new
+ image 320 240 RGB_IMAGE "layer" 100.0 0)))
+ (gimp-image-add-layer image layer -1)
+
+ ; display our image
+ (set! window (car (gimp-display-new image)))
+ (gimp-edit-clear layer)
+
+ ; let's draw
+ (set! points (cons-array 4 'double))
+ (aset points 0 0) ; (x0, y0)
+ (aset points 1 0)
+ (aset points 2 320) ; (x1, y1)
+ (aset points 3 240)
+ (gimp-palette-set-foreground '(255 0 0))
+ (gimp-paintbrush-default layer 4 points)
+
+**Image:** The most important object in GIMP is the _Image_ object, without which there would be no "I" in
"GIMP." On line 2, a 320x240 pixel, RGB image is instantiated and assigned to <small>image</small>.
+
+GIMP has an abstract concept of what an _Image_ object is. Aside from having properties like width and
height, an image can be thought of as a collection of _Layer_ objects.
+
+**Layer:** Layers are very important because without them, there would be nothing to draw on. On lines 5
through 9, a _Layer_ object is instantiated and then layer is added to <small>image</small>.
+
+**Channel:** The purpose of channels is to provide a selective view of the coloration of an image. For
instance, all RGB images come with a red, green, and blue channel.
+
+If you wanted to affect only the "blueness" of an image, you could disable the red and green channels and
only draw on the blue channel. It's a useful but rather advanced concept, so we'll skip this one for now.
+
+**Display:** Although not strictly required, it would be nice to be able to watch our <small>image</small>
as graphics are being drawn on it. To do this, a _Display_ object is opened on line 12\. Our layer might be
filled with garbage, so it's a good idea to use the <small>gimp-edit-clear</small> function to ensure that we
start with a clean slate. (Hopefully, the layer constructor will behave more consistently in the future.)
Note that as you write Scheme code into the Script-Fu Console, changes in the image will show up
interactively.
+
+**Drawable:** In C++ terminology, a _Drawable_ would be an abstract base class which _Layer_ and _Channel_
are subclasses of. As the name implies, drawables are anything that can be drawn on. For example, one can
draw on channels to perform advanced color effects. But for now we'll just stick to drawing on a layer.
+
+There are many, many functions in the GIMP API for manipulating drawables. On lines 16 to 22,
<small>gimp-paintbrush-default</small> is used to draw a line on <small>layer</small>. Since this function
needs an array of (x,y) coordinates, the <small>cons-array</small> function is used to allocate an array of
doubles and the <small>aset</small> function is used to fill it with values. Before the line is drawn, we
change our default foreground color to a bright red using <small>gimp-palette-set-foreground</small>. If
you've typed everything in correctly, you should have something that looks like _Figure Two showed below_.
+
+<figure>
+<img src="{filename}power_02.jpg" alt="power_02.jpg" />
+<figcaption>
+Figure Two: A simple drawing.
+<figcaption>
+</figure>
+
+
+## Bigger and Better Things...
+
+Now that we have a foundation of knowledge to work from, we can move on to more interesting topics. Study
Scheme and GIMP on your own. See _Resources_ for good places to start your self-education.
+
+## Resources
+
+* [Teach Yourself Scheme in Fixnum Days](http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html)
+* [Mike Terry's Black Belt School of Script-Fu](http://www.klaban.torun.pl/help/script-fu-tutorial/)
+* Richard Stallman: [The
Coder](http://web.archive.org/web/*/http://www.linuxcare.com/viewpoints/os-interviews/12-14-99.epl) (web
archive)
+* [Why Functional Programming Matters](http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html)
+* [SIOD Scheme](http://web.archive.org/web/20011129110930/http://people.delphi.com/gjc/siod.html) (web
archive)
+
+This article was originally published in [Linux Magazine, January
2002](http://www.linux-mag.com/2002-01/power_01.html). It has since then seen some minor updates.
+
diff --git a/content/tutorials/Bezier_Selections/index.md b/content/tutorials/Bezier_Selections/index.md
index 82c4bd2..f5c9b30 100644
--- a/content/tutorials/Bezier_Selections/index.md
+++ b/content/tutorials/Bezier_Selections/index.md
@@ -1,43 +1,43 @@
-Title: Simple Paths (Bezier Selections)
-Date: 2015-08-18T16:27:00-05:00
-Modified: 2015-08-18T16:27:04-05:00
-Author: Tuomas Kuosmanen
-
-
-Text and images Copyright (C) 2002 [Tuomas Kuosmanen](mailto:tigertNOSPAM gimp org) and may not be used
without permission of the author.
-
-## Intention
-
-The Path tool (previously known as Bezier Selection) is a powerful tool in GIMP. The rectangle- and
ellipse-selections are not very flexible if you happen to need something more special. And since many of us
GIMPers don't have a graphics tablet, it's not so easy to make the mouse pointer move the way you want. The
paths can solve the problem by using smooth mathematical curves instead your own shaky mouse trail. Paths are
also very useful when used with gradient fills, see [Drawing Shapes with Bezier](/tutorials/Drawing_Shapes/)
for more information on this great tool.
-
-## What is it?
-
-<figure>
-<img src="{filename}bezier_box.png" alt="bezier_box.png" />
-</figure>
-
-![Bezier Button]({filename}bezier_button.png)The Path tool can make complex selections by specifying certain
points that are connected together with a curve. So to make a box you would specify four points, one for each
corner of the box. Example in image above. The great thing is the corners don't have to be 90 degrees.
-In older GIMP versions (1.2.x), you had to close all paths by joining the last point of the path to the
first one. This is not necessary anymore in 2.0 and later versions, but this is still useful to create closed
shapes such as a box. So after creating the fourth point, press and hold the Ctrl key and click on the first
point to close the path. Of course you can have as many points as you need.
-Finally, click the "Stroke Path" button (in the Path Options dialog) or use the menu Edit->Stroke Path... to
draw the new shape. You can also use the button "Create Selection from Path" if you want to have a selection
that you can fill or stroke.
-
-## Modifying the curves
-
-<figure>
-<img src="{filename}bezier_curve.png" alt="bezier_curve.png" />
-</figure>
-
-Straight lines alone are a useful thing, but it's not all. Actually they are not lines but curves. Cool
anti-aliased smooth curves.
-The curves can be modified quite flexibly by adjusting the 'handles' of the nearest points. 'What handles?'
you say... See the image above? The small circles are those familiar points we used with the box in the
previous section. The little boxes are those handles. The handles are not visible by default, you must drag
them 'out' from a point. To make the handles visible 1\. click to a point to make it active, 2\. while
pressing the Ctrl key, click again on the same point and 3\. drag the handles out with the mousebutton still
pressed down. You notice the curves between the points are not straight anymore. You can control the shapes
by dragging the handles around.
-
-## A Few Tips
-
-* Always before modifying any points or handles, click the handle or a point to make it active.
-* To have a smooth curve, both handles should be aligned at each point. Press Shift while dragging a
handle to ensure that the other one remains aligned.
-* A path can have multiple components. If you have closed a path, you can create a new component by
clicking where you want to place the first point of the new component.
-* If you want to create several components without closing them, press Shift and click where you want to
start a new one.
-* When you are satisfied with the shape, you can use Stroke Path or Create Selection from Path.
-* The default GIMP installation creates a dock containing the tabs "Layers, Channels, Paths, Undo". Click
on the Paths tab to manage your paths.
-
-The original tutorial can be found [here](http://www.tigert.com/gimp/tutorials/bezier/).
-It was updated for GIMP 2.0 by Raphaël Quinet.
-
+Title: Simple Paths (Bezier Selections)
+Date: 2015-08-18T16:27:00-05:00
+Modified: 2015-08-18T16:27:04-05:00
+Author: Tuomas Kuosmanen
+
+
+Text and images Copyright (C) 2002 [Tuomas Kuosmanen](mailto:tigertNOSPAM gimp org) and may not be used
without permission of the author.
+
+## Intention
+
+The Path tool (previously known as Bezier Selection) is a powerful tool in GIMP. The rectangle- and
ellipse-selections are not very flexible if you happen to need something more special. And since many of us
GIMPers don't have a graphics tablet, it's not so easy to make the mouse pointer move the way you want. The
paths can solve the problem by using smooth mathematical curves instead your own shaky mouse trail. Paths are
also very useful when used with gradient fills, see [Drawing Shapes with Bezier](/tutorials/Drawing_Shapes/)
for more information on this great tool.
+
+## What is it?
+
+<figure>
+<img src="{filename}bezier_box.png" alt="bezier_box.png" />
+</figure>
+
+![Bezier Button]({filename}bezier_button.png)The Path tool can make complex selections by specifying certain
points that are connected together with a curve. So to make a box you would specify four points, one for each
corner of the box. Example in image above. The great thing is the corners don't have to be 90 degrees.
+In older GIMP versions (1.2.x), you had to close all paths by joining the last point of the path to the
first one. This is not necessary anymore in 2.0 and later versions, but this is still useful to create closed
shapes such as a box. So after creating the fourth point, press and hold the Ctrl key and click on the first
point to close the path. Of course you can have as many points as you need.
+Finally, click the "Stroke Path" button (in the Path Options dialog) or use the menu Edit->Stroke Path... to
draw the new shape. You can also use the button "Create Selection from Path" if you want to have a selection
that you can fill or stroke.
+
+## Modifying the curves
+
+<figure>
+<img src="{filename}bezier_curve.png" alt="bezier_curve.png" />
+</figure>
+
+Straight lines alone are a useful thing, but it's not all. Actually they are not lines but curves. Cool
anti-aliased smooth curves.
+The curves can be modified quite flexibly by adjusting the 'handles' of the nearest points. 'What handles?'
you say... See the image above? The small circles are those familiar points we used with the box in the
previous section. The little boxes are those handles. The handles are not visible by default, you must drag
them 'out' from a point. To make the handles visible 1\. click to a point to make it active, 2\. while
pressing the Ctrl key, click again on the same point and 3\. drag the handles out with the mousebutton still
pressed down. You notice the curves between the points are not straight anymore. You can control the shapes
by dragging the handles around.
+
+## A Few Tips
+
+* Always before modifying any points or handles, click the handle or a point to make it active.
+* To have a smooth curve, both handles should be aligned at each point. Press Shift while dragging a
handle to ensure that the other one remains aligned.
+* A path can have multiple components. If you have closed a path, you can create a new component by
clicking where you want to place the first point of the new component.
+* If you want to create several components without closing them, press Shift and click where you want to
start a new one.
+* When you are satisfied with the shape, you can use Stroke Path or Create Selection from Path.
+* The default GIMP installation creates a dock containing the tabs "Layers, Channels, Paths, Undo". Click
on the Paths tab to manage your paths.
+
+The original tutorial can be found [here](http://www.tigert.com/gimp/tutorials/bezier/).
+It was updated for GIMP 2.0 by Raphaël Quinet.
+
diff --git a/content/tutorials/Blending_Exposures/index.md b/content/tutorials/Blending_Exposures/index.md
index a1f6888..b00bb6c 100644
--- a/content/tutorials/Blending_Exposures/index.md
+++ b/content/tutorials/Blending_Exposures/index.md
@@ -1,202 +1,202 @@
-Title: Blending Exposures
-Date: 2015-08-18T16:27:00-05:00
-Modified: 2015-08-18T16:27:04-05:00
-Author: Eric R. Jeschke
-
-
-Text and images Copyright (C) 2002 [Eric R. Jeschke](mailto:ericNOSPAM redskiesatnight com) and may not be
used without permission of the author.
-
-## Intention
-
-<figure>
-<img src="{filename}before-light.jpg" alt="before-light.jpg" />
-</figure>
-<figure>
-<img src="{filename}before-dark.jpg" alt="before-dark.jpg" />
-</figure>
-<figure>
-<img src="{filename}after.jpg" alt="after.jpg" />
-</figure>
-
-In this tutorial I'll show you how to do blend two different exposures of the same scene that you would like
to combine to get the best parts of both images. This procedure works best if you have:
-
-1. (obviously) have shot two different exposures that would be pleasing to combine,
-2. had the camera mounted on a tripod (not strictly necessary, but helps greatly in aligning the images),
-3. the scenes are not too different at the boundaries of the blend. If the scene has changed too much
(trees blowing, waves, people or cars moving, etc. between the images), especially at or near the "seams" of
the blend, it will make the blend more difficult.
-
-If you have only one image that needs exposure adjustment, you might look at using the "digital" neutral
density filter or the contrast masking technique.
-
-Giving credit where credit is due: I did not come up with this method. I adapted it for GIMP from a
Photoshop tutorial on the luminous-landscape.com photography web site (great web site BTW, I recommend it).
-
-## The Procedure
-
-The basic technique is to create a layer above the image that contains the other exposure of the same scene.
Finally, we apply a layer mask to the this layer which makes parts of the image transparent that we want to
show through from below.
-
-## Step 1
-
-<figure>
-<img src="{filename}image-original-light.jpg" alt="image-original-light.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-original-dark.jpg" alt="image-original-dark.jpg" />
-</figure>
-
-
-Here are the two exposures, loaded into GIMP. I am going to sandwich these on different layers and then
combine them with a layer mask.
-
-## Step 2
-
-<figure>
-<img src="{filename}layers1.jpg" alt="layers1.jpg" />
-</figure>
-<figure>
-<img src="{filename}newlayeroptions.jpg" alt="newlayeroptions.jpg" />
-</figure>
-<figure>
-<img src="{filename}layers2.jpg" alt="layers2.jpg" />
-</figure>
-
-
-The first decision is which one goes on top. In this case I have decided to put the lighter image on top and
the darker one on the bottom. The reason is because I hand-held the shots, and they are far from aligned. I'm
going to have to move the bottom image until the arch is aligned as best I can get it. Also, the top image is
the composition I want anyway, and I'll have less painting to do that way.
-
-Go the image that is going to be on the bottom. Open the Layers dialog (<kbd>Ctrl+L</kbd>) and click on the
new layer button (![New Layer]({filename}newlayer.jpg)) to create a new layer.
-
-## Step 3
-
-<figure>
-<img src="{filename}layers3.jpg" alt="layers3.jpg" />
-</figure>
-<figure>
-<img src="{filename}layers4.jpg" alt="layers4.jpg" />
-</figure>
-
-
-Go to the image that is going to be on top. Select all and copy (<kbd>Ctrl+A</kbd> then <kbd>Ctrl+C</kbd>).
In the Layers dialog, make sure the new layer is selected, then go to the bottom image window and paste
(<kbd>Ctrl+V</kbd>). In the Layers dialog, click on the anchor button (![anchor]({filename}anchor.jpg)) to
anchor the floating image.
-
-## Step 4
-
-<figure>
-<img src="{filename}layers5.jpg" alt="layers5.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-composite-paste.jpg" alt="image-composite-paste.jpg" />
-</figure>
-
-
-Crank down the opacity of the upper layer so that you can see both images.
-
-If they are perfectly aligned you can skip the next step. Unless you used a digital capture on a tripod, the
images probably need to be aligned. (Even if you had a film camera on a tripod, it is difficult to get two
successive scans to feed through in perfect alignment.)
-
-## Step 5
-
-<figure>
-<img src="{filename}layers6.jpg" alt="layers6.jpg" />
-</figure>
-
-
-<figure>
-<img src="{filename}image-composite-move.jpg" alt="image-composite-move.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-composite-align.jpg" alt="image-composite-align.jpg" />
-</figure>
-
-
-In the Layers dialog, select the layer you need to move or rotate. In this case it is the lower layer.
-
-Using the arrow keys, nudge the image into alignment. You may need to rotate the image slightly too.
-
-When you get close to alignment, zoom in to get a good close-up view and get the best possible fit.
-
-## Step 6
-
-![Add mask options]({filename}addmaskoptions.jpg)![Layers]({filename}layers7.jpg)
-
-In the Layers dialog, right-click on the upper layer and select Add Layer Mask. In the Add Mask Options
dialog, select White (Full Opacity) and click OK.
-
-## Step 7
-
-<figure>
-<img src="{filename}image-select1.jpg" alt="image-select1.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-fill.jpg" alt="image-fill.jpg" />
-</figure>
-
-
-Now I want to paint black (transparency) onto the layer mask wherever I want the lower image to show through.
-
-To minimize painting time, use the hand-select ("lasso"![Lasso]({filename}lasso.jpg) ) tool to select a
large, hand-drawn region just inside all the borders of the area you want to paint, as shown at right. Then
using the fill tool (![Fill]({filename}fill.jpg)) fill the selection with black.
-
-## Step 8
-
-<figure>
-<img src="{filename}brushes1.jpg" alt="brushes1.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-paint1.jpg" alt="image-paint1.jpg" />
-</figure>
-
-
-Next, I select a large opaque brush from the Brushes dialog (Dialogs/Brushes), select the Paint tool
(![Paint]({filename}paint.jpg)) and begin painting into the mask close to the boundaries of the blend.
-
-Notice that I still have the opacity cranked down on the upper layer so that I can see both layers.
-
-## Step 9
-
-<figure>
-<img src="{filename}brushes2.jpg" alt="brushes2.jpg" />
-</figure>
-
-
-<figure>
-<img src="{filename}image-paint2.jpg" alt="image-paint2.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-donepainting.jpg" alt="image-donepainting.jpg" />
-</figure>
-
-
-For the very edges, I switch to a small, feathered brush and very carefully paint the edges.
-
-While I'm painting, I'll zoom in and out frequently ("=" key to zoom in, "-" key to zoom out) to inspect the
work. Don't worry too much about the borders, since we'll probably have to touch those up anyway.
-
-## Step 10
-
-<figure>
-<img src="{filename}image-preclone.jpg" alt="image-preclone.jpg" />
-</figure>
-<figure>
-<img src="{filename}image-postclone.jpg" alt="image-postclone.jpg" />
-</figure>
-
-
-Now the most painstaking part: blending the seams. This is a little tricky due to the different tonalities
of the two exposures.
-
-For blending work, the Clone (![Clone]({filename}clone.jpg)), Smudge (![Smudge]({filename}smudge.jpg)),
Airbrush (![Airbrush]({filename}airbrush.jpg)) and Blur (![Blur]({filename}convolve.jpg)) are my tools of
choice.
-
-Since I'm not sure if these tools have the ability to work across layers (as they do in Photoshop), I
duplicate the image (<kbd>Ctrl+D</kbd>) and flatten the duplicate (<span class="filter"><Image> Layers ->
Flatten Image</span>) and work on it. This has the additional benefit that if I ever mess up the blending job
too badly I can always easily start over at this step.
-
-**Note:** see [this tutorial on correcting blown out
highlights](/tutorials/Photo_Edit/Blown_Out_Highlights/) for another example of using these tools for
blending and some useful tips on their use.
-
-Here I've used primarily clone and a touch of smudge to blend the seams of the two exposures. I didn't do a
very thorough job with this image, since it is more of an example and not something I'm planning to display
at any significant size.
-
-**Note:** notice the chromatic aberration of the lens in the form of purple fringing at the edge of the
arch. These tools are great for dealing with that even if I were not blending two exposures.
-
-## Final Step
-
-<figure>
-<img src="{filename}image-finished.jpg" alt="image-finished.jpg" />
-</figure>
-
-
-Finished. The image still has some problems with blown out highlights in the sunlight of the rock face. It
is also a little too dark in the foreground shadow.
-
-## Further Reading on Blending Exposures
-
-* [Dynamic Ranger.](http://www.digitalsecrets.net/secrets/DynamicRanger.html)
-* [Vincent Bockaert's method of blending in
Photoshop](http://www.vincentbockaert.com/Tutorials/ImagesFramePST_08_PS.htm)
-* [Digital Photography For What it's Worth.](http://www.cliffshade.com/dpfwiw/)
-
-The original tutorial used to appear on
[gimpguru](https://web.archive.org/web/20140704035059/http://gimpguru.org/tutorials/blendingexposures/).
-
+Title: Blending Exposures
+Date: 2015-08-18T16:27:00-05:00
+Modified: 2015-08-18T16:27:04-05:00
+Author: Eric R. Jeschke
+
+
+Text and images Copyright (C) 2002 [Eric R. Jeschke](mailto:ericNOSPAM redskiesatnight com) and may not be
used without permission of the author.
+
+## Intention
+
+<figure>
+<img src="{filename}before-light.jpg" alt="before-light.jpg" />
+</figure>
+<figure>
+<img src="{filename}before-dark.jpg" alt="before-dark.jpg" />
+</figure>
+<figure>
+<img src="{filename}after.jpg" alt="after.jpg" />
+</figure>
+
+In this tutorial I'll show you how to do blend two different exposures of the same scene that you would like
to combine to get the best parts of both images. This procedure works best if you have:
+
+1. (obviously) have shot two different exposures that would be pleasing to combine,
+2. had the camera mounted on a tripod (not strictly necessary, but helps greatly in aligning the images),
+3. the scenes are not too different at the boundaries of the blend. If the scene has changed too much
(trees blowing, waves, people or cars moving, etc. between the images), especially at or near the "seams" of
the blend, it will make the blend more difficult.
+
+If you have only one image that needs exposure adjustment, you might look at using the "digital" neutral
density filter or the contrast masking technique.
+
+Giving credit where credit is due: I did not come up with this method. I adapted it for GIMP from a
Photoshop tutorial on the luminous-landscape.com photography web site (great web site BTW, I recommend it).
+
+## The Procedure
+
+The basic technique is to create a layer above the image that contains the other exposure of the same scene.
Finally, we apply a layer mask to the this layer which makes parts of the image transparent that we want to
show through from below.
+
+## Step 1
+
+<figure>
+<img src="{filename}image-original-light.jpg" alt="image-original-light.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-original-dark.jpg" alt="image-original-dark.jpg" />
+</figure>
+
+
+Here are the two exposures, loaded into GIMP. I am going to sandwich these on different layers and then
combine them with a layer mask.
+
+## Step 2
+
+<figure>
+<img src="{filename}layers1.jpg" alt="layers1.jpg" />
+</figure>
+<figure>
+<img src="{filename}newlayeroptions.jpg" alt="newlayeroptions.jpg" />
+</figure>
+<figure>
+<img src="{filename}layers2.jpg" alt="layers2.jpg" />
+</figure>
+
+
+The first decision is which one goes on top. In this case I have decided to put the lighter image on top and
the darker one on the bottom. The reason is because I hand-held the shots, and they are far from aligned. I'm
going to have to move the bottom image until the arch is aligned as best I can get it. Also, the top image is
the composition I want anyway, and I'll have less painting to do that way.
+
+Go the image that is going to be on the bottom. Open the Layers dialog (<kbd>Ctrl+L</kbd>) and click on the
new layer button (![New Layer]({filename}newlayer.jpg)) to create a new layer.
+
+## Step 3
+
+<figure>
+<img src="{filename}layers3.jpg" alt="layers3.jpg" />
+</figure>
+<figure>
+<img src="{filename}layers4.jpg" alt="layers4.jpg" />
+</figure>
+
+
+Go to the image that is going to be on top. Select all and copy (<kbd>Ctrl+A</kbd> then <kbd>Ctrl+C</kbd>).
In the Layers dialog, make sure the new layer is selected, then go to the bottom image window and paste
(<kbd>Ctrl+V</kbd>). In the Layers dialog, click on the anchor button (![anchor]({filename}anchor.jpg)) to
anchor the floating image.
+
+## Step 4
+
+<figure>
+<img src="{filename}layers5.jpg" alt="layers5.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-composite-paste.jpg" alt="image-composite-paste.jpg" />
+</figure>
+
+
+Crank down the opacity of the upper layer so that you can see both images.
+
+If they are perfectly aligned you can skip the next step. Unless you used a digital capture on a tripod, the
images probably need to be aligned. (Even if you had a film camera on a tripod, it is difficult to get two
successive scans to feed through in perfect alignment.)
+
+## Step 5
+
+<figure>
+<img src="{filename}layers6.jpg" alt="layers6.jpg" />
+</figure>
+
+
+<figure>
+<img src="{filename}image-composite-move.jpg" alt="image-composite-move.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-composite-align.jpg" alt="image-composite-align.jpg" />
+</figure>
+
+
+In the Layers dialog, select the layer you need to move or rotate. In this case it is the lower layer.
+
+Using the arrow keys, nudge the image into alignment. You may need to rotate the image slightly too.
+
+When you get close to alignment, zoom in to get a good close-up view and get the best possible fit.
+
+## Step 6
+
+![Add mask options]({filename}addmaskoptions.jpg)![Layers]({filename}layers7.jpg)
+
+In the Layers dialog, right-click on the upper layer and select Add Layer Mask. In the Add Mask Options
dialog, select White (Full Opacity) and click OK.
+
+## Step 7
+
+<figure>
+<img src="{filename}image-select1.jpg" alt="image-select1.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-fill.jpg" alt="image-fill.jpg" />
+</figure>
+
+
+Now I want to paint black (transparency) onto the layer mask wherever I want the lower image to show through.
+
+To minimize painting time, use the hand-select ("lasso"![Lasso]({filename}lasso.jpg) ) tool to select a
large, hand-drawn region just inside all the borders of the area you want to paint, as shown at right. Then
using the fill tool (![Fill]({filename}fill.jpg)) fill the selection with black.
+
+## Step 8
+
+<figure>
+<img src="{filename}brushes1.jpg" alt="brushes1.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-paint1.jpg" alt="image-paint1.jpg" />
+</figure>
+
+
+Next, I select a large opaque brush from the Brushes dialog (Dialogs/Brushes), select the Paint tool
(![Paint]({filename}paint.jpg)) and begin painting into the mask close to the boundaries of the blend.
+
+Notice that I still have the opacity cranked down on the upper layer so that I can see both layers.
+
+## Step 9
+
+<figure>
+<img src="{filename}brushes2.jpg" alt="brushes2.jpg" />
+</figure>
+
+
+<figure>
+<img src="{filename}image-paint2.jpg" alt="image-paint2.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-donepainting.jpg" alt="image-donepainting.jpg" />
+</figure>
+
+
+For the very edges, I switch to a small, feathered brush and very carefully paint the edges.
+
+While I'm painting, I'll zoom in and out frequently ("=" key to zoom in, "-" key to zoom out) to inspect the
work. Don't worry too much about the borders, since we'll probably have to touch those up anyway.
+
+## Step 10
+
+<figure>
+<img src="{filename}image-preclone.jpg" alt="image-preclone.jpg" />
+</figure>
+<figure>
+<img src="{filename}image-postclone.jpg" alt="image-postclone.jpg" />
+</figure>
+
+
+Now the most painstaking part: blending the seams. This is a little tricky due to the different tonalities
of the two exposures.
+
+For blending work, the Clone (![Clone]({filename}clone.jpg)), Smudge (![Smudge]({filename}smudge.jpg)),
Airbrush (![Airbrush]({filename}airbrush.jpg)) and Blur (![Blur]({filename}convolve.jpg)) are my tools of
choice.
+
+Since I'm not sure if these tools have the ability to work across layers (as they do in Photoshop), I
duplicate the image (<kbd>Ctrl+D</kbd>) and flatten the duplicate (<span class="filter"><Image> Layers ->
Flatten Image</span>) and work on it. This has the additional benefit that if I ever mess up the blending job
too badly I can always easily start over at this step.
+
+**Note:** see [this tutorial on correcting blown out
highlights](/tutorials/Photo_Edit/Blown_Out_Highlights/) for another example of using these tools for
blending and some useful tips on their use.
+
+Here I've used primarily clone and a touch of smudge to blend the seams of the two exposures. I didn't do a
very thorough job with this image, since it is more of an example and not something I'm planning to display
at any significant size.
+
+**Note:** notice the chromatic aberration of the lens in the form of purple fringing at the edge of the
arch. These tools are great for dealing with that even if I were not blending two exposures.
+
+## Final Step
+
+<figure>
+<img src="{filename}image-finished.jpg" alt="image-finished.jpg" />
+</figure>
+
+
+Finished. The image still has some problems with blown out highlights in the sunlight of the rock face. It
is also a little too dark in the foreground shadow.
+
+## Further Reading on Blending Exposures
+
+* [Dynamic Ranger.](http://www.digitalsecrets.net/secrets/DynamicRanger.html)
+* [Vincent Bockaert's method of blending in
Photoshop](http://www.vincentbockaert.com/Tutorials/ImagesFramePST_08_PS.htm)
+* [Digital Photography For What it's Worth.](http://www.cliffshade.com/dpfwiw/)
+
+The original tutorial used to appear on
[gimpguru](https://web.archive.org/web/20140704035059/http://gimpguru.org/tutorials/blendingexposures/).
+
diff --git a/content/tutorials/GIMP_Quickies/index.md b/content/tutorials/GIMP_Quickies/index.md
index 834ebe8..d1ed0ba 100644
--- a/content/tutorials/GIMP_Quickies/index.md
+++ b/content/tutorials/GIMP_Quickies/index.md
@@ -1,269 +1,269 @@
-Title: Gimp Quickies
-Date: 2015-08-03T17:11:25-05:00
-Modified: 2015-08-03T17:11:32-05:00
-Authors: Pat David
-Summary: A quick look at some easy features.
-
-<small>
-<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license"><img class='cc-badge'
alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" /></a>
-<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - GIMP Quickies (text & images)</span> by [Pat
David](http://blog.patdavid.net)
-is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US).
-</small>
-
-
-## Intention
-
-So you installed GIMP on your computer, congratulations! GIMP is a very powerful image manipulation
software, but don’t let that intimidate you. Even if you don’t have time to learn advanced computer graphics,
GIMP can still be a very useful and handy tool for quick image modifications.
-
-It is my hope that these few examples will help to solve those small, quick modifications that you may need
to apply to an image. Hopefully this will lead to learning even more powerful image editing capabilities that
GIMP is capable of as well.
-
-For quick access, these are the four main points I’ll cover in this quick tutorial:
-
-* [Changing the Size (Dimensions) of an Image (Scale)](#changing-the-size-dimensions-of-an-image-scale)
-* [Changing the Size (Filesize) of a JPEG](#changing-the-size-filesize-of-a-jpeg)
-* [Crop an Image](#crop-an-image)
-* [Rotate or Flip an Image](#rotate-andor-flip-an-image)
-
-In keeping with the spirit of the predecessor to this page, I will be using images from the Astronomy
Picture of the Day ([APOD](http://apod.nasa.gov/apod/astropix.html)), provided by NASA.
-
-All you need to know to follow these quick examples is to be able to find your image and open it:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">F</span>ile → <span
style="text-decoration: underline;">O</span>pen</span></div>
-
-## Changing the Size (Dimensions) of an Image (Scale)
-
-It’s a common problem that you may have an image that is too large for a particular purpose (embedding in a
webpage, posting somewhere online, or including in an email for instance). In this case you will often want
to _scale_ the image down to a smaller size more suitable for your use.
-
-This is a very simple task to accomplish in GIMP easily.
-
-The image we’ll be using to illustrate this with is [The Horsehead Nebula in
Infrared](http://apod.nasa.gov/apod/ap130422.html).
-
-When you first open your image in GIMP, chances are that the image will be zoomed so that the entire image
fits in your canvas. The thing to notice for this example is that by default the window decoration at the top
of GIMP will show you some information about the image.
-
-<figure>
-<img src="{filename}Scale-View-Pixel-Size-Original.png" alt="Test">
-<figcaption>
-View of the GIMP canvas, with information at the top of the window.
-</figcaption>
-</figure>
-
-Notice that the information at the top of the window shows the <span style="color: #00FF00;">current pixel
dimensions</span> of the image (in this case, the pixel size is 1225×1280).
-
-To resize the image to new dimensions, we need only invoke the **Scale Image** dialog:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">I</span>mage → <span
style="text-decoration: underline;">S</span>cale Image…</span></div>
-
-This will then open the **Scale Image** dialog:
-
-<figure>
-<img src='{filename}Scale-Image-Dialog.png' alt='Scale Image'>
-<figcaption>
-The <strong>Scale Image</strong> dialog.
-</figcaption>
-</figure>
-
-In the **Scale Image** dialog, you’ll find a <span style="color: #00FF00;">place to enter new values</span>
for **Width** and **Height**. If you know one of the new dimensions you’d like for the image, fill in the
appropriate one here.
-
-You’ll also <span style="color: #0080FF;">notice a small chain</span> just to the right of the **Width** and
**Height** entry boxes. This icon shows that the Width and Height values are locked with respect to each
other, meaning that changing one value will cause the other to change in order to keep the same aspect ratio
(no strange compression or stretching in the image).
-
-For example, if you knew that you wanted your image to have a new width of 600px, you can enter that value
in the **Width** input, and the **Height** will automatically change to maintain the aspect ratio of the
image:
-
-<figure>
-<img src='{filename}Scale-Image-Dialog-Scaled.png' alt='Scaled Image'>
-<figcaption>
-Changing the **Width** to 600px.
-</figcaption>
-</figure>
-
-As you can see, entering **600px** for the width automatically changes the height to **627px**.
-
-Also notice I have shown a different option under **Quality** → Interpolation. The default value for this is
*Cubic*, but to retain the best quality it would better to use **Sinc (Lanczos3)**.
-
-If you want to specify a new size using a different type of value (other than Pixel size), you can change
the type by clicking on the “**px**” spinner:
-
-<figure>
-<img src='{filename}Scale-Image-Dialog-Value-Types.png' alt='Value Types'>
-<figcaption>
-Changing input value types.
-</figcaption>
-</figure>
-
-A common use for this could be if you wanted to specify a new size as a percentage of the old one. In this
case you could change to “percent”, and then enter 50 in either field to scale the image in half.
-
-Once you are done scaling the image, don’t forget to export the changes you’ve made:
-
-<div class="MenuCmd"><span>File → Export…</span></div>
-
-to export as a new filename, or:
-
-<div class="MenuCmd"><span>File → Overwrite {FILENAME}</span></div>
-
-to overwrite the original file (use caution).
-
-For more detail about using **Scale Image**, you can see [the
documentation](http://docs.gimp.org/2.8/en/gimp-image-scale.html).
-
-## Changing the Size (Filesize) of a JPEG
-
-You can also modify the filesize of an image when exporting it to a format like JPEG. JPEG is a _**lossy**_
compression algorithm, meaning that when saving images to the JPEG format, you will sacrifice some image
quality to gain a smaller filesize.
-
-Using the same Horsehead Nebula image from above, I have resized it to 200px wide (see above), and exported
it using different levels of JPEG compression:
-
-<figure>
-<img src='{filename}JPG-Compression-Sample.png' alt='JPG Compression comparison'>
-<figcaption>
-Comparison of different JPEG compression levels.
-</figcaption>
-</figure>
-
-As you can see, even at a quality setting of 80, the image is significantly smaller in filesize (77% size
reduction), while the image quality is still quite reasonable.
-
-When you’ve finished any image modifications you are doing, and are ready to export, simply invoke the
export dialog with:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">F</span>ile → Export…</span></div>
-
-This will invoke the **Export Image** dialog:
-
-<figure>
-<img src='{filename}Export-Image-Dialog.png' alt='Export Image Dialog'>
-<figcaption>
-
-</figcaption>
-</figure>
-
-You can now enter a <span style="color: #00FF00;">new name for your file here</span>. If you include the
filetype extension (in this case, .jpg), GIMP will automatically try to export in that file format for you.
Here I am exporting the image as a JPEG file.
-
-You can also navigate to a new location on your computer through the **Places** pane, if you need to export
the file to a different location. When you are ready to export the image, just hit <span style="color:
#0080FF;">the **Export** button.</span>
-
-This will then bring up the **Export Image as JPEG** dialog, where you can change the quality of the export:
-
-<figure>
-<img src='{filename}Export-Image-as-JPEG.png' alt='Export as JPG'>
-<figcaption>
-
-</figcaption>
-</figure>
-
-From this dialog you can now <span style="color: #00FF00;">change the quality of the export</span>. If you
also have the “Show preview in image window” option checked, the image on the canvas will update to reflect
the quality value you input. This will also enable the “File size:” information to tell you what the
resulting file size will be. (You may need to move some windows around to view the preview on the canvas in
the background).
-
-When you are happy with the results, hit the **<span style="text-decoration: underline;">E</span>xport**
button to export.
-
-To see more details about exporting different image formats, see [Getting Images out of
GIMP](http://docs.gimp.org/2.8/en/gimp-images-out.html) in the manual.
-
-## Crop an Image
-
-There are numerous reasons you may want to crop an image. You may want to remove useless borders or
information for aesthetic reasons, or you may want the focus of the final image to be of some particular
detail for instance.
-
-In a nutshell, cropping is just an operation to trim the image down to a smaller region than what you
started with:
-
-<figure>
-<img src='{filename}Crop-Example.png' alt='Cropping'>
-<figcaption>
-Original image (left), cropped image (right).
-</figcaption>
-</figure>
-
-The procedure to crop an image is straightforward. You can either get to <span style="color: #00FF00;">the
**Crop Tool**</span> through the tools palette:
-
-<figure>
-<img src='{filename}Crop-Tool.png' alt='Crop Tool'>
-<figcaption>
-Crop Tool on the Tools Palette.
-</figcaption>
-</figure>
-
-Or you can access the crop tool through the menus:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">T</span>ools → <span
style="text-decoration: underline;">T</span>ransform Tools → <span style="text-decoration:
underline;">C</span>rop</span></div>
-
-![GIMP Crop Tool cursor]({filename}Crop-Cursor.png)Once the tool is activated, you’ll notice that your mouse
cursor on the canvas will change to indicate the **Crop Tool** is being used.
-
-Now you can Left-Click anywhere on your image canvas, and drag the mouse to a new location to highlight an
initial selection to crop. You don’t have to worry about being exact at this point, as you will be able to
modify the final selection before actually cropping.
-
-<figure>
-<img src='{filename}Crop-First.png' alt='Crop First'>
-<figcaption>
-Initial pass with the Crop Tool.
-Crop Tool options (left), cropping on the canvas (right).
-</figcaption>
-</figure>
-<span class="caption"></span></div>
-
-After making the initial selection of a region to crop, you’ll find the selection still active. At this
point hovering your mouse cursor over any of the four corners or sides of the selection will change the mouse
cursor, and highlight that region.
-
-This allows you to now fine-tune the selection for cropping. You can click and drag any side or corner to
move that portion of the selection.
-
-Once you are happy with the region to crop, you can just press the **“Enter"** key on your keyboard to
commit the crop. If at any time you’d like to start over or decide not to crop at all, you can press the
**“Esc”** key on your keyboard to back out of the operation.
-
-See [the documentation](http://docs.gimp.org/2.8/en/gimp-tool-crop.html) for more information on cropping in
GIMP.
-
-### Another Method
-
-Another way to crop an image is to make a selection first, using the **Rectangle Select Tool**:
-
-<figure>
-<img src='{filename}Crop-Select-Tool.png' alt='Crop Select'>
-<figcaption>
-Rectangle Select Tool.
-</figcaption>
-</figure>
-
-Or through the menus:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">T</span>ools → <span
style="text-decoration: underline;">S</span>election Tools → <span style="text-decoration:
underline;">R</span>ectangle Select</span></div>
-
-You can then highlight a selection the same way as the **Crop Tool**, and adjust the selection as well. Once
you have a selection you like, you can crop the image to fit that selection through:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">I</span>mage → <span
style="text-decoration: underline;">C</span>rop to Selection</span></div>
-
-## Rotate and/or Flip an Image
-
-There may be a time that you would need to rotate an image. For instance, you may have taken the image with
your camera in a vertical orientation, and for some reason it wasn’t detected by GIMP as needing to be
rotated (GIMP will normally figure this out for you, but not always).
-
-There may also be a time that you’d like to flip an image as well. These commands are grouped together under
the same menu item:
-
-<div class="MenuCmd"><span><span style="text-decoration: underline;">I</span>mage → <span
style="text-decoration: underline;">T</span>ransform</span></div>
-
-### Flip an Image
-
-If you want to flip your image, the **Transform** menu offers two options, **Flip <span
style="text-decoration: underline;">H</span>orizontally**, or **Flip <span style="text-decoration:
underline;">V</span>ertically**. This operation will mirror your image along the specified axis. For example,
here are all of the flip operations shown in a single image:
-
-<figure>
-<img src='{filename}Flip-Sample-Arrow.jpg' alt='Flipping'>
-<figcaption>
-All flips applied to base image (top left).
-</figcaption>
-</figure>
-
-### Rotate an Image
-
-Image rotation from the **Transform** menu is contrained to either 90° clockwise/counter-clockwise, or 180°.
-
-Don’t mis-interpret this to mean that GIMP cannot do arbitrary rotations (any angle). Arbitrary rotations
are handled on a per-layer basis, while the image rotation described here is applicable to the entire image
at once.
-
-<figure>
-<img src='{filename}Rotate-Sample.jpg' alt='Rotating Sample'>
-<figcaption>
-Original (top left), 90° clockwise (top right)
-90° counter-clockwise (bottom left), 180° (bottom right)
-</figcaption>
-</figure>
-<span class="caption"></span></div>
-
-## In Conclusion
-
-The simple examples shown here are just the tip of a really, really large iceberg. These are, however,
common modifications that many people are often looking to make without having to learn too much about image
processing. Hopefully they have been helpful.
-
-I encourage you to peruse the [other tutorials](/tutorials/) for more advanced methods of image processing
as well!
-
-The original tutorial this was adapted from can be found [here](../Lite_Quickies).
-
-
----
-
-
-<small>
-<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license"><img class='cc-badge'
alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" /></a>
-<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - GIMP Quickies (text & images)</span> by [Pat
David](http://blog.patdavid.net)
-is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US).
-</small>
-
+Title: Gimp Quickies
+Date: 2015-08-03T17:11:25-05:00
+Modified: 2015-08-03T17:11:32-05:00
+Authors: Pat David
+Summary: A quick look at some easy features.
+
+<small>
+<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license"><img class='cc-badge'
alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" /></a>
+<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - GIMP Quickies (text & images)</span> by [Pat
David](http://blog.patdavid.net)
+is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US).
+</small>
+
+
+## Intention
+
+So you installed GIMP on your computer, congratulations! GIMP is a very powerful image manipulation
software, but don’t let that intimidate you. Even if you don’t have time to learn advanced computer graphics,
GIMP can still be a very useful and handy tool for quick image modifications.
+
+It is my hope that these few examples will help to solve those small, quick modifications that you may need
to apply to an image. Hopefully this will lead to learning even more powerful image editing capabilities that
GIMP is capable of as well.
+
+For quick access, these are the four main points I’ll cover in this quick tutorial:
+
+* [Changing the Size (Dimensions) of an Image (Scale)](#changing-the-size-dimensions-of-an-image-scale)
+* [Changing the Size (Filesize) of a JPEG](#changing-the-size-filesize-of-a-jpeg)
+* [Crop an Image](#crop-an-image)
+* [Rotate or Flip an Image](#rotate-andor-flip-an-image)
+
+In keeping with the spirit of the predecessor to this page, I will be using images from the Astronomy
Picture of the Day ([APOD](http://apod.nasa.gov/apod/astropix.html)), provided by NASA.
+
+All you need to know to follow these quick examples is to be able to find your image and open it:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">F</span>ile → <span
style="text-decoration: underline;">O</span>pen</span></div>
+
+## Changing the Size (Dimensions) of an Image (Scale)
+
+It’s a common problem that you may have an image that is too large for a particular purpose (embedding in a
webpage, posting somewhere online, or including in an email for instance). In this case you will often want
to _scale_ the image down to a smaller size more suitable for your use.
+
+This is a very simple task to accomplish in GIMP easily.
+
+The image we’ll be using to illustrate this with is [The Horsehead Nebula in
Infrared](http://apod.nasa.gov/apod/ap130422.html).
+
+When you first open your image in GIMP, chances are that the image will be zoomed so that the entire image
fits in your canvas. The thing to notice for this example is that by default the window decoration at the top
of GIMP will show you some information about the image.
+
+<figure>
+<img src="{filename}Scale-View-Pixel-Size-Original.png" alt="Test">
+<figcaption>
+View of the GIMP canvas, with information at the top of the window.
+</figcaption>
+</figure>
+
+Notice that the information at the top of the window shows the <span style="color: #00FF00;">current pixel
dimensions</span> of the image (in this case, the pixel size is 1225×1280).
+
+To resize the image to new dimensions, we need only invoke the **Scale Image** dialog:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">I</span>mage → <span
style="text-decoration: underline;">S</span>cale Image…</span></div>
+
+This will then open the **Scale Image** dialog:
+
+<figure>
+<img src='{filename}Scale-Image-Dialog.png' alt='Scale Image'>
+<figcaption>
+The <strong>Scale Image</strong> dialog.
+</figcaption>
+</figure>
+
+In the **Scale Image** dialog, you’ll find a <span style="color: #00FF00;">place to enter new values</span>
for **Width** and **Height**. If you know one of the new dimensions you’d like for the image, fill in the
appropriate one here.
+
+You’ll also <span style="color: #0080FF;">notice a small chain</span> just to the right of the **Width** and
**Height** entry boxes. This icon shows that the Width and Height values are locked with respect to each
other, meaning that changing one value will cause the other to change in order to keep the same aspect ratio
(no strange compression or stretching in the image).
+
+For example, if you knew that you wanted your image to have a new width of 600px, you can enter that value
in the **Width** input, and the **Height** will automatically change to maintain the aspect ratio of the
image:
+
+<figure>
+<img src='{filename}Scale-Image-Dialog-Scaled.png' alt='Scaled Image'>
+<figcaption>
+Changing the **Width** to 600px.
+</figcaption>
+</figure>
+
+As you can see, entering **600px** for the width automatically changes the height to **627px**.
+
+Also notice I have shown a different option under **Quality** → Interpolation. The default value for this is
*Cubic*, but to retain the best quality it would better to use **Sinc (Lanczos3)**.
+
+If you want to specify a new size using a different type of value (other than Pixel size), you can change
the type by clicking on the “**px**” spinner:
+
+<figure>
+<img src='{filename}Scale-Image-Dialog-Value-Types.png' alt='Value Types'>
+<figcaption>
+Changing input value types.
+</figcaption>
+</figure>
+
+A common use for this could be if you wanted to specify a new size as a percentage of the old one. In this
case you could change to “percent”, and then enter 50 in either field to scale the image in half.
+
+Once you are done scaling the image, don’t forget to export the changes you’ve made:
+
+<div class="MenuCmd"><span>File → Export…</span></div>
+
+to export as a new filename, or:
+
+<div class="MenuCmd"><span>File → Overwrite {FILENAME}</span></div>
+
+to overwrite the original file (use caution).
+
+For more detail about using **Scale Image**, you can see [the
documentation](http://docs.gimp.org/2.8/en/gimp-image-scale.html).
+
+## Changing the Size (Filesize) of a JPEG
+
+You can also modify the filesize of an image when exporting it to a format like JPEG. JPEG is a _**lossy**_
compression algorithm, meaning that when saving images to the JPEG format, you will sacrifice some image
quality to gain a smaller filesize.
+
+Using the same Horsehead Nebula image from above, I have resized it to 200px wide (see above), and exported
it using different levels of JPEG compression:
+
+<figure>
+<img src='{filename}JPG-Compression-Sample.png' alt='JPG Compression comparison'>
+<figcaption>
+Comparison of different JPEG compression levels.
+</figcaption>
+</figure>
+
+As you can see, even at a quality setting of 80, the image is significantly smaller in filesize (77% size
reduction), while the image quality is still quite reasonable.
+
+When you’ve finished any image modifications you are doing, and are ready to export, simply invoke the
export dialog with:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">F</span>ile → Export…</span></div>
+
+This will invoke the **Export Image** dialog:
+
+<figure>
+<img src='{filename}Export-Image-Dialog.png' alt='Export Image Dialog'>
+<figcaption>
+
+</figcaption>
+</figure>
+
+You can now enter a <span style="color: #00FF00;">new name for your file here</span>. If you include the
filetype extension (in this case, .jpg), GIMP will automatically try to export in that file format for you.
Here I am exporting the image as a JPEG file.
+
+You can also navigate to a new location on your computer through the **Places** pane, if you need to export
the file to a different location. When you are ready to export the image, just hit <span style="color:
#0080FF;">the **Export** button.</span>
+
+This will then bring up the **Export Image as JPEG** dialog, where you can change the quality of the export:
+
+<figure>
+<img src='{filename}Export-Image-as-JPEG.png' alt='Export as JPG'>
+<figcaption>
+
+</figcaption>
+</figure>
+
+From this dialog you can now <span style="color: #00FF00;">change the quality of the export</span>. If you
also have the “Show preview in image window” option checked, the image on the canvas will update to reflect
the quality value you input. This will also enable the “File size:” information to tell you what the
resulting file size will be. (You may need to move some windows around to view the preview on the canvas in
the background).
+
+When you are happy with the results, hit the **<span style="text-decoration: underline;">E</span>xport**
button to export.
+
+To see more details about exporting different image formats, see [Getting Images out of
GIMP](http://docs.gimp.org/2.8/en/gimp-images-out.html) in the manual.
+
+## Crop an Image
+
+There are numerous reasons you may want to crop an image. You may want to remove useless borders or
information for aesthetic reasons, or you may want the focus of the final image to be of some particular
detail for instance.
+
+In a nutshell, cropping is just an operation to trim the image down to a smaller region than what you
started with:
+
+<figure>
+<img src='{filename}Crop-Example.png' alt='Cropping'>
+<figcaption>
+Original image (left), cropped image (right).
+</figcaption>
+</figure>
+
+The procedure to crop an image is straightforward. You can either get to <span style="color: #00FF00;">the
**Crop Tool**</span> through the tools palette:
+
+<figure>
+<img src='{filename}Crop-Tool.png' alt='Crop Tool'>
+<figcaption>
+Crop Tool on the Tools Palette.
+</figcaption>
+</figure>
+
+Or you can access the crop tool through the menus:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">T</span>ools → <span
style="text-decoration: underline;">T</span>ransform Tools → <span style="text-decoration:
underline;">C</span>rop</span></div>
+
+![GIMP Crop Tool cursor]({filename}Crop-Cursor.png)Once the tool is activated, you’ll notice that your mouse
cursor on the canvas will change to indicate the **Crop Tool** is being used.
+
+Now you can Left-Click anywhere on your image canvas, and drag the mouse to a new location to highlight an
initial selection to crop. You don’t have to worry about being exact at this point, as you will be able to
modify the final selection before actually cropping.
+
+<figure>
+<img src='{filename}Crop-First.png' alt='Crop First'>
+<figcaption>
+Initial pass with the Crop Tool.
+Crop Tool options (left), cropping on the canvas (right).
+</figcaption>
+</figure>
+<span class="caption"></span></div>
+
+After making the initial selection of a region to crop, you’ll find the selection still active. At this
point hovering your mouse cursor over any of the four corners or sides of the selection will change the mouse
cursor, and highlight that region.
+
+This allows you to now fine-tune the selection for cropping. You can click and drag any side or corner to
move that portion of the selection.
+
+Once you are happy with the region to crop, you can just press the **“Enter"** key on your keyboard to
commit the crop. If at any time you’d like to start over or decide not to crop at all, you can press the
**“Esc”** key on your keyboard to back out of the operation.
+
+See [the documentation](http://docs.gimp.org/2.8/en/gimp-tool-crop.html) for more information on cropping in
GIMP.
+
+### Another Method
+
+Another way to crop an image is to make a selection first, using the **Rectangle Select Tool**:
+
+<figure>
+<img src='{filename}Crop-Select-Tool.png' alt='Crop Select'>
+<figcaption>
+Rectangle Select Tool.
+</figcaption>
+</figure>
+
+Or through the menus:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">T</span>ools → <span
style="text-decoration: underline;">S</span>election Tools → <span style="text-decoration:
underline;">R</span>ectangle Select</span></div>
+
+You can then highlight a selection the same way as the **Crop Tool**, and adjust the selection as well. Once
you have a selection you like, you can crop the image to fit that selection through:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">I</span>mage → <span
style="text-decoration: underline;">C</span>rop to Selection</span></div>
+
+## Rotate and/or Flip an Image
+
+There may be a time that you would need to rotate an image. For instance, you may have taken the image with
your camera in a vertical orientation, and for some reason it wasn’t detected by GIMP as needing to be
rotated (GIMP will normally figure this out for you, but not always).
+
+There may also be a time that you’d like to flip an image as well. These commands are grouped together under
the same menu item:
+
+<div class="MenuCmd"><span><span style="text-decoration: underline;">I</span>mage → <span
style="text-decoration: underline;">T</span>ransform</span></div>
+
+### Flip an Image
+
+If you want to flip your image, the **Transform** menu offers two options, **Flip <span
style="text-decoration: underline;">H</span>orizontally**, or **Flip <span style="text-decoration:
underline;">V</span>ertically**. This operation will mirror your image along the specified axis. For example,
here are all of the flip operations shown in a single image:
+
+<figure>
+<img src='{filename}Flip-Sample-Arrow.jpg' alt='Flipping'>
+<figcaption>
+All flips applied to base image (top left).
+</figcaption>
+</figure>
+
+### Rotate an Image
+
+Image rotation from the **Transform** menu is contrained to either 90° clockwise/counter-clockwise, or 180°.
+
+Don’t mis-interpret this to mean that GIMP cannot do arbitrary rotations (any angle). Arbitrary rotations
are handled on a per-layer basis, while the image rotation described here is applicable to the entire image
at once.
+
+<figure>
+<img src='{filename}Rotate-Sample.jpg' alt='Rotating Sample'>
+<figcaption>
+Original (top left), 90° clockwise (top right)
+90° counter-clockwise (bottom left), 180° (bottom right)
+</figcaption>
+</figure>
+<span class="caption"></span></div>
+
+## In Conclusion
+
+The simple examples shown here are just the tip of a really, really large iceberg. These are, however,
common modifications that many people are often looking to make without having to learn too much about image
processing. Hopefully they have been helpful.
+
+I encourage you to peruse the [other tutorials](/tutorials/) for more advanced methods of image processing
as well!
+
+The original tutorial this was adapted from can be found [here](../Lite_Quickies).
+
+
+---
+
+
+<small>
+<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.en_US" rel="license"><img class='cc-badge'
alt="Creative Commons License" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" /></a>
+<span xmlns:dct="http://purl.org/dc/terms/">GIMP Tutorial - GIMP Quickies (text & images)</span> by [Pat
David](http://blog.patdavid.net)
+is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported
License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US).
+</small>
+
diff --git a/content/unix/fonts.md b/content/unix/fonts.md
index b30d9f8..824141d 100644
--- a/content/unix/fonts.md
+++ b/content/unix/fonts.md
@@ -1,49 +1,49 @@
-Title: Fonts in GIMP 2.X
-Date: 2015-08-17T16:18:41-05:00
-Modified: 2015-08-17T16:18:45-05:00
-Author: Pat David
-Status: hidden
-
-
-GIMP 2.x handles a variety of font formats, most notably TrueType, OpenType and Type1.
-
-## Adding Fonts for GIMP 2.x
-
-### System-Wide
-
-Most distributions will propose a large choice of fonts in their package manager. The easier is usually to
install them this way.
-
-In case you want to manually add third-party fonts (commercial, downloaded...), adding fonts is usually just
a matter of moving font files into a directory that is searched by the font system. Have a look at
<tt>/etc/fonts/fonts.conf</tt> (and perhaps <tt>/etc/fonts/local.conf</tt>) to find out which directories are
searched, or look for your operating system documentation. After copying the fonts there, you should run
**fc-cache** to regenerate the fonts cache.
-
-Some distributions also propose a graphical tool allowing to install fonts from third-party without
bothering about the specifics.
-
-Fonts added this way will be available to all applications using the Fontconfig system (such as GIMP).
-
-### For GIMP only
-
-You might want to install fonts for use with GIMP only or you might not have permissions to install fonts
system-wide. For such cases, GIMP 2.x also looks for fonts in a GIMP specific font search path. The default
place where GIMP will look for user fonts is <tt>~/.gimp-2.8/fonts/</tt> but you can change it or add other
directories by modifying your <tt>gimprc</tt> or in _Edit -> Preferences -> Folders -> Fonts_. Then press the
_Refresh_ button in the _Fonts_ dialog and start using your new fonts.
-
-## Internal Mechanics
-
-_This section is mostly informational, for users or developers who want to know more about under-the-hood
font handling in GIMP 2.x. In nearly no case would you have to understand and know any of this in order to
have font support in GIMP 2.x. See above for adding fonts simply._
-
-Starting with GIMP version 2.0, font rendering is handled significantly differently from the way it was done
in GIMP 1.0 and 1.2\. GIMP no longer uses the X server to render the fonts. Instead it uses
[Pango](http://www.pango.org/) and the [FreeType](http://www.freetype.org/) library. Font configuration is
handled by [Fontconfig](http://www.fontconfig.org/). As a result you get much better font rendering with real
antialiasing, support for bidirectional text and various scripts.
-
-Fontconfig can nowadays be considered a de-facto standard on Linux and other Unix operating systems as the
simple way to list and share the same fonts accross all application. Most modern graphical programs with text
support now uses this library. And desktop environments (GNOME or KDE for instance) use it too. Therefore it
is likely already installed and properly set up out of the box in most Unix/Linux machines and you have
probably nothing to do in particular to have fonts working in GIMP 2.x.
-
-If you use a very raw operating system though, or if you simply want to know more, you may want to have a
look at the [Fontconfig User Manual](http://www.fontconfig.org/fontconfig-user.html) to create or edit your
font configuration file. Note though that since it is such a widespread system, modern desktops environments
such as GNOME or KDE, or other distribution software, may overwrite your font configuration file. They
sometimes provide an easier interface to manage your fonts instead. For this reason, you are advised to
search the specific documentation of your operating system distribution before updating your font
configuration.
-
-## Known Problems
-
-<dl>
-
-<dt>GIMP crashes when scanning fonts</dt>
-
-<dd>There have been reports of crashes at startup when GIMP scans your font directories. These crashes
should go away as soon as you update to a newer version of fontconfig (>= 2.2.0). As a quick workaround you
can start gimp with the <kbd>--no-fonts</kbd> command-line option but of course you will not be able to use
the text tool then.</dd>
-
-<dt>GIMP cannot see my X fonts</dt>
-
-<dd>GIMP does not use the X server or any X font server, so don't be surprised if GIMP doesn't see the fonts
you configured in your X11 setup. If you wish to add fonts, see the instructions above.</dd>
-
-</dl>
-
+Title: Fonts in GIMP 2.X
+Date: 2015-08-17T16:18:41-05:00
+Modified: 2015-08-17T16:18:45-05:00
+Author: Pat David
+Status: hidden
+
+
+GIMP 2.x handles a variety of font formats, most notably TrueType, OpenType and Type1.
+
+## Adding Fonts for GIMP 2.x
+
+### System-Wide
+
+Most distributions will propose a large choice of fonts in their package manager. The easier is usually to
install them this way.
+
+In case you want to manually add third-party fonts (commercial, downloaded...), adding fonts is usually just
a matter of moving font files into a directory that is searched by the font system. Have a look at
<tt>/etc/fonts/fonts.conf</tt> (and perhaps <tt>/etc/fonts/local.conf</tt>) to find out which directories are
searched, or look for your operating system documentation. After copying the fonts there, you should run
**fc-cache** to regenerate the fonts cache.
+
+Some distributions also propose a graphical tool allowing to install fonts from third-party without
bothering about the specifics.
+
+Fonts added this way will be available to all applications using the Fontconfig system (such as GIMP).
+
+### For GIMP only
+
+You might want to install fonts for use with GIMP only or you might not have permissions to install fonts
system-wide. For such cases, GIMP 2.x also looks for fonts in a GIMP specific font search path. The default
place where GIMP will look for user fonts is <tt>~/.gimp-2.8/fonts/</tt> but you can change it or add other
directories by modifying your <tt>gimprc</tt> or in _Edit -> Preferences -> Folders -> Fonts_. Then press the
_Refresh_ button in the _Fonts_ dialog and start using your new fonts.
+
+## Internal Mechanics
+
+_This section is mostly informational, for users or developers who want to know more about under-the-hood
font handling in GIMP 2.x. In nearly no case would you have to understand and know any of this in order to
have font support in GIMP 2.x. See above for adding fonts simply._
+
+Starting with GIMP version 2.0, font rendering is handled significantly differently from the way it was done
in GIMP 1.0 and 1.2\. GIMP no longer uses the X server to render the fonts. Instead it uses
[Pango](http://www.pango.org/) and the [FreeType](http://www.freetype.org/) library. Font configuration is
handled by [Fontconfig](http://www.fontconfig.org/). As a result you get much better font rendering with real
antialiasing, support for bidirectional text and various scripts.
+
+Fontconfig can nowadays be considered a de-facto standard on Linux and other Unix operating systems as the
simple way to list and share the same fonts accross all application. Most modern graphical programs with text
support now uses this library. And desktop environments (GNOME or KDE for instance) use it too. Therefore it
is likely already installed and properly set up out of the box in most Unix/Linux machines and you have
probably nothing to do in particular to have fonts working in GIMP 2.x.
+
+If you use a very raw operating system though, or if you simply want to know more, you may want to have a
look at the [Fontconfig User Manual](http://www.fontconfig.org/fontconfig-user.html) to create or edit your
font configuration file. Note though that since it is such a widespread system, modern desktops environments
such as GNOME or KDE, or other distribution software, may overwrite your font configuration file. They
sometimes provide an easier interface to manage your fonts instead. For this reason, you are advised to
search the specific documentation of your operating system distribution before updating your font
configuration.
+
+## Known Problems
+
+<dl>
+
+<dt>GIMP crashes when scanning fonts</dt>
+
+<dd>There have been reports of crashes at startup when GIMP scans your font directories. These crashes
should go away as soon as you update to a newer version of fontconfig (>= 2.2.0). As a quick workaround you
can start gimp with the <kbd>--no-fonts</kbd> command-line option but of course you will not be able to use
the text tool then.</dd>
+
+<dt>GIMP cannot see my X fonts</dt>
+
+<dd>GIMP does not use the X server or any X font server, so don't be surprised if GIMP doesn't see the fonts
you configured in your X11 setup. If you wish to add fonts, see the instructions above.</dd>
+
+</dl>
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]