Kapitel 13. Skripterstellung

Inhaltsverzeichnis

1. Erweiterungen (Plugins)
1.1. Einführung
1.2. Mit Plugins arbeiten
1.3. Neue Plugins installieren
1.4. Plugins schreiben
2. Skript-Fu verwenden
2.1. Skript-Fu?
2.2. Skript-Fus installieren
2.3. Typische Fehler
2.4. Verschiedene Skript-Fu-Arten
2.5. Selbständige Skripte
2.6. Bildabhängige Skripte
3. Ein Skript-Fu-Tutorial
3.1. Der erste Kontakt mit Scheme
3.2. Variablen und Funktionen
3.3. Listen, Listen und noch mehr Listen
3.4. Ihr erstes Fu-Skript
3.5. Unserem Skript Leben einhauchen
3.6. Das Textbox-Skript erweitern
3.7. Ihr Skript und seine Ausgabe

1. Erweiterungen (Plugins)

1.1. Einführung

Eine der besten Eigenschaften vom GIMP ist, wie einfach man die Funktionalität erweitern kann, nämlich mit Plugins (Erweiterungen). GIMP-Erweiterungen sind externe Programme, die unter der Kontrolle des GIMP-Hauptprogrammes laufen und sehr eng mit diesem zusammenarbeiten. Plugins können Bilder praktisch genauso verändern, wie Benutzer es können. Ihr Vorteil liegt darin, dass es sehr viel einfacher ist, GIMP um eine Fähigkeit zu erweitern, indem man ein kleines Plugin schreibt, als den extrem umfangreichen und komplexen Code des GIMP-Kernes zu verändern. Viele wichtige Erweiterungen bestehen lediglich aus 100 oder 200 Zeilen C-Code.

Einige Dutzend Erweiterungen werden zusammen mit GIMP ausgeliefert und automatisch installiert. Auf die meisten Plugins können Sie über das Filtermenü zugreifen (tatsächlich sind nahezu alle Kommandos in diesem Menü Plugins), aber einige sind auch in anderen Menüs zu finden. In vielen Fällen können Sie eines benutzen, ohne überhaupt zu merken, dass es ein Plugin ist. Beispielsweise ist die Normalisierungsfunktion für die automatische Farbkorrektur tatsächlich eine Erweiterung, auch wenn das auf den ersten Blick nicht zu erkennen ist.

Jeder auf der ganzen Welt kann ein GIMP-Plugin programmieren und es über das Internet zur Verfügung stellen, entweder über die Datenbank oder auf einer persönlichen Webseite, und viele wichtige Erweiterungen kann man sich so beschaffen. Einige davon werden an anderen Stellen im Benutzerhandbuch beschrieben. Mit dieser uneingeschränkten Freiheit geht allerdings auch ein gewisses Risiko einher: da jeder ein Plugin schreiben kann, gibt es keine effektive Qualitätskontrolle. Die zusammen mit GIMP ausgelieferten Erweiterungen wurden alle von den Entwicklern getestet und angepasst, aber viele von denen, die Sie herunterladen können, wurden nur schnell zusammengeschustert und dann nach mir die Sintflut. Einige Pluginprogrammierer interessiert Robustheit überhaupt nicht, und selbst bei den übrigen sind die Möglichkeiten, auf verschieden Systemen in verschiedenen Situationen zu testen, oftmals nur beschränkt. Wenn Sie eine Erweiterung herunterladen, erhalten Sie letztlich etwas umsonst, und manchmal bekommen Sie genau den entsprechenden Gegenwert dafür. Das eben Gesagte soll Sie jetzt keineswegs entmutigen, sondern sicherstellen, dass Sie der Realität ins Auge sehen.

[Warnung] Warnung

Erweiterungen sind vollwertige ausführbare Programme und können alles das tun, was jedes andere Programm tun kann, einschließlich Hintertüren auf Ihrem System installieren oder anderweitig die Sicherheit kompromittieren. Installieren Sie kein Plugin, das nicht aus einer vertrauenswürdigen Quelle stammt!

[Achtung] Achtung

Erweiterungen gehören seit vielen Versionen zu GIMP dazu. Allerdings können Plugins, die für eine GIMP-Version geschrieben wurden, nur selten ohne Probleme von anderen Versionen verwendet werden. Sie müssen portiert werden. Manchmal ist das einfach, manchmal nicht. Zum Glück gibt es viele Erweiterungen bereits in verschiedenen Versionen. Fazit: Bevor Sie versuchen, ein Plugin zu installieren, vergewissern Sie sich, dass es tatsächlich für Ihre GIMP-Version geschrieben wurde.

1.2. Mit Plugins arbeiten

Meistens können Sie eine Erweiterung wie jedes andere GIMP-Werkzeug verwenden, ohne sich dessen bewusst zu sein, dass es ein Plugin ist. Allerdings ist es hilfreich, ein paar Dinge über Plugins zu verstehen.

Als erstes gilt, dass Erweiterungen im allgemeinen nicht so robust sind wie der GIMP-Kern. Wenn GIMP abstürzt, ist das eine ernste Sache: es kann dem Benutzer eine Menge Ärger und Kopfschmerzen bereiten. Wenn ein Plugin abstürzt, sind die Folgen üblicherweise nicht so gravierend. In den meisten Fällen kann man einfach weiterarbeiten, ohne sich irgendwelche Gedanken zu machen.

[Anmerkung] Anmerkung

Weil Plugins eigene Programme sind, kommunizieren sie mit dem GIMP-Kern in einer besonderen Art und Weise. Die Entwickler nennen es über eine Leitung sprechen. Wenn ein Plugin abstürzt, bricht die Verbindung ab, und Sie sehen eine Fehlermeldung mit dem Text wire read error.

[Tipp] Tipp

Wenn eine Erweiterung abstürzt, erhalten Sie von GIMP die sehr beunruhigende Meldung, dass das Plugin GIMP möglicherweise in einem fehlerhaften Zustand hinterlassen hat und Sie besser Ihre Daten sichern und das Programm beenden sollten. Genau genommen ist das völlig korrekt, da Erweiterungen nahezu alles in GIMP verändern können, aber praktisch zeigt die Erfahrung, dass eine Datenverfälschung tatsächlich sehr selten ist, daher arbeiten viele Benutzer einfach weiter und kümmern sich nicht darum. Unsere Empfehlung lautet: überlegen Sie einfach, wie groß der angerichtete Schaden ist, falls etwas schief geht, und wägen Sie danach ab.

Wegen der besonderen Art und Weise, wie Plugins mit GIMP kommunizieren, haben sie keinen Mechanismus, um über Änderungen informiert zu werden, die Sie nach dem Starten des Plugins an einem Bild vorgenommen haben. Wenn Sie eine Erweiterung starten und dann das Bild mit einem anderen Werkzeug verändern, wird das Plugin des öfteren abstürzen oder falsche Resultate liefern. Sie sollten es vermeiden, ein Bild mit mehr als einem Plugin gleichzeitig zu bearbeiten oder irgendetwas mit dem Bild zu machen, bis das Plugin seine Arbeit beendet hat. Wenn Sie diesen Rat ignorieren, werden Sie vermutlich nicht nur Ihr Bild vermurksen, sondern wahrscheinlich auch gleich das System zum Zurücknehmen von Aktionen, so dass Sie nicht einmal mehr in der Lage sein werden, Ihren Blödsinn wieder rückgängig zu machen.

1.3. Neue Plugins installieren

Die mit GIMP ausgelieferten Erweiterungen müssen nicht extra installiert werden; Plugins, die Sie selbst herunterladen, schon. Dafür gibt es verschiedene Szenarien, je nachdem, welches Betriebssystem Sie benutzen und wie das Plugin strukturiert ist. Beispielsweise gilt es unter Linux als ganz simpel, eine neue Erweiterung zu installieren, unter Windows ist es entweder leicht oder sehr schwer. Auf jeden Fall sollten daher die verschiedenen Szenarien getrennt betrachtet werden.

1.3.1. Linux-/Unix-artige Systeme

Die meisten Plugins gehören in eine von zwei Kategorien: kleine, deren Quellcode in einer einzigen C-Datei ausgeliefert wird, und größere, deren Quellcode in einem Verzeichnis mit mehreren Dateien inklusive einem Makefile ausgeliefert wird.

Für den simplen Fall einer einfachen Datei(-Erweiterung), nennen wir sie mal borker.c, besteht das Installieren einfach nur darin, den Befehl gimptool-2.0 --install borker.c einzugeben. Dieses Kommando übersetzt das Plugin und installiert es in Ihrem persönlichen Pluginverzeichnis ~/gimp-2.4/plugins (falls Sie das nicht geändert haben). Dann wird es automatisch geladen, wenn Sie GIMP das nächste Mal starten. Sie müssen nicht root sein, um das Ganze auszuführen, tatsächlich sollten Sie es nicht einmal. Falls die Erweiterung nicht übersetzt werden kann, na ja, dann seien Sie halt etwas kreativ.

Wenn Sie erstmal das Plugin installiert haben, wie aktivieren Sie es dann? Der Menüpfad wird durch das Plugin selbst festgelegt, d.h. um diese Frage zu beantworten, müssen Sie entweder einen Blick in die Dokumentation der Erweiterung werfen (falls vorhanden) oder den Plugin-Beschreibungsdialog (aus ExtrasPlugin-Browser) aufrufen, das Plugin über seinen Namen suchen und auf den Reiter Baumansichts schauen. Beachten Sie hierzu auch Abschnitt 12.6, „Plugin-Browser“ Wenn Sie es dann immer noch nicht finden, durchsuchen Sie die Menüs oder werfen Sie einen Blick auf den Quellcode (Registerabschnitt) - je nachdem, was einfacher ist.

Für komplexere Erweiterungen, die als ein Verzeichnis mit mehreren Dateien organisiert sind, sollte im Verzeichnis eine Datei namens INSTALL oder README mit Instruktionen vorhanden sein. Falls nicht, lautet der beste Rat, das Plugin auf den Müll zu werfen und die Zeit für etwas anderes zu nutzen. Jeder Code, der geschrieben wurde, ohne sich um den Benutzer zu scheren, wird vermutlich nur jede Menge Frustration verursachen.

Einige Plugins (insbesondere diejenigen, die auf der GIMP-Pluginschablone basieren) sind so entworfen, dass sie im GIMP-Hauptverzeichnis statt in Ihren persönlichem Verzeichnis installiert werden. Bei diesen müssen Sie den letzten Installationsschritt (also den Befehl make install) als root ausführen.

Wenn Sie eine Erweiterung in Ihrem persönlichen Pluginverzeichnis installieren, die den selben Namen wie eine Erweiterung aus dem Systemverzeichnis hat, kann nur eine davon geladen werden. Priorität genießt in diesem Fall diejenige, die in Ihrem persönlichen GIMP-Verzeichnis. Sie werden jedoch jedesmal, wenn Sie GIMP starten, eine entsprechende Meldung bekommen. Das Beste ist, eine solche Situation ganz zu vermeiden und immer schön Ordnung in den Plugins zu halten.

1.3.2. Windows

Windows ist für die Programmentwicklung eine sehr viel problematischere Umgebung als Linux. Jede ordentliche Linuxdistribution enthält sämtliche Werkzeuge, um Software zu übersetzen, und sie sind sich in ihrer Arbeitsweise alle sehr ähnlich, aber solche Werkzeuge sind bei Windows nicht dabei. Es ist zwar möglich, eine gute Programmentwicklungs-Umgebung unter Windows aufzusetzen, aber dazu benötigt man entweder genügend Geld oder sehr viel Anstrengungen und Wissen.

In Bezug auf GIMP-Plugins bedeutet das folgendes: entweder haben Sie eine Umgebung, in der Sie Software entwickeln können, oder Sie haben Sie nicht. Wenn nicht, dann besteht Ihre beste Hoffnung darin, irgendwo eine bereits übersetzte Version der Erweiterung zu finden (oder jemanden dazu zu überreden, sie für Sie zu übersetzen). In diesem Fall müssen Sie sie nur in Ihren persönlichen Pluginordner kopieren. Wenn Sie eine Umgebung haben, um Software zu entwickeln (also eine Umgebung, in der Sie GIMP übersetzen können), dann haben Sie zweifellos schon etwas Vorwissen und können einfach den Instruktionen für Linux folgen.

1.3.3. Apple Mac OS X

Die Art und Weise, in der Sie Plugins für GIMP auf Ihrem Mac installieren können, hängt im Wesentlichen davon ab, wie Sie GIMP selbst installiert haben. Wenn Sie zu den Mutigen gehört haben, die ihr GIMP mittels eines Paketmanagers wie Fink[FINK] oder Darwinports[DARWINORTS] installiert haben, erfolgt die Übersetzung und Installation von Plugins genau nach der im Abschnitt für Linux beschriebenen Vorgehensweise. Einige wenige Plugins sind sogar direkt über die verschiedenen Paketmanager verfügbar, ein Blick auf die aktuell verfügbaren Pakete kann sich also durchaus lohnen.

Sollten Sie hingegen zu der Gruppe von Mac-Benutzern gehören, welche GIMP als vorgefertigte Anwendung, wie beispielsweise GIMP.app, installiert hat, so werden Sie vermutlich auch die Plugins nicht selbst übersetzen und installieren wollen. Sie können im Gegenzug versuchen, eine vorgefertigte Version des Plugins für OS X im Web oder beim Autor zu bekommen, allerdings stehen Ihre Chancen hierbei nicht sonderlich gut. Die Plugins selbst zu übersetzen beinhaltet unglücklicherweise auch die Installation von GIMP über einen der oben genannten Paketmanager. Aber es kann ja nie schaden, sich ein bisschen mit der Software zu beschäftigen, die man auf seinem Rechner hat.

1.4. Plugins schreiben

Wenn Sie lernen möchten, wie man eine Erweiterung schreibt, können Sie reichlich Hilfestellungen auf der GIMP-Entwicklerwebseite [GIMP-DEV-PLUGIN] finden. GIMP ist ein komplexes Programm, aber das Entwicklerteam hat erhebliche Anstrengungen unternommen, die Lernkurve fürs Schreiben von Plugins flach zu halten. Es gibt ausgezeichnete Unterweisungen und Beispiele, und die Programmbibliothek, die Plugins zur Kommunikation mit GIMP verwenden (libgimp), besitzt eine gut dokumentierte Schnittstelle (API). Gute Programmierer, die dadurch lernen, dass sie vorhandene Erweiterung modifizieren, sind oft schon nach wenigen Tagen in der Lage, erstaunliche Dinge zu erreichen.