Kapitel 13. Skriptning

Innehållsförteckning

1. Insticksmoduler
1.1. Introduktion
1.2. Använda insticksmoduler
1.3. Installera nya insticksmoduler
1.4. Skriva insticksmoduler
2. Använda Script-Fu-skript
2.1. Script-Fu?
2.2. Installera Script-Fu-skript
2.3. Så gör man och så gör man inte
2.4. Olika sorters Script-Fu
3. En Script-Fu-handledning
3.1. Bekanta dig med Scheme
3.2. Variabler och funktioner
3.3. Listor, listor och åter listor
3.4. Ditt första Script-Fu-skript
3.5. Giving Our Script Some Guts
3.6. Extending The Text Box Script
3.7. Ditt skript och hur det fungerar

1. Insticksmoduler

1.1. Introduktion

En av de trevligaste sakerna med GIMP är hur lätt man kan utöka dess funktionalitet genom att använda insticksmoduler. GIMP-insticksmoduler är externa program som körs under GIMP-huvudprogrammets kontroll och interagerar mycket nära med det. Insticksmoduler kan manipulera bilder på nästan alla sätt som en användare kan. Deras fördel är att det är mycket lättare att lägga till en egenskap till GIMP genom att skriva en liten insticksmodul än att skriva om den enorma mängden komplex kod som utgör kärnan i GIMP. Många betydande insticksmoduler har källkod skriven i C som endast innehåller runt 100-200 rader.

Dussintals insticksmoduler är inkluderade i GIMPs grunddistribution och installeras automatiskt med GIMP. De flesta av dem kan kommas åt genom Filter-menyn (faktum är att allt du hittar där är insticksmoduler), men ett antal finns i andra menyer. I många fall kan du använda en av dem utan att ha en aning om att den är en insticksmodul: till exempel är ”Normalisera”-funktionen för automatisk färgkorrigering faktiskt en insticksmodul, fast det är inget i sättet den fungerar som säger dig det. Till och med import och export av bilder görs av insticksmoduler.

Alla kan skriva en GIMP-insticksmodul och göra den tillgänglig på nätet. Det finns många användbara insticksmoduler som kan erhållas på detta sätt. Några av dem beskrivs på annat håll i användarhandboken.

Med denna fria tillgänglighet följer dock vissa risker. Det faktum att vem som helst kan ge ut insticksmoduler innebär att det inte finns någon effektiv kvalitetskontroll. Alla insticksmoduler som levereras med GIMP har testats och finjusterats av utvecklarna. Ytterligare insticksmoduler som finns på nätet kan ha hackats ihop på några timmar och sedan övergivits. Vissa insticksmakare bryr sig inte om robusthet, och även om så vore fallet så är deras förmåga att testa dessa på olika system i olika situationer ofta rätt begränsad. I korthet får du när du hämtar en insticksmodul något som är gratis, och ibland får du exakt det du betalar för. Det här är inte för att avskräcka dig, utan för att se till att du förstår att inte alla insticksmoduler på nätet kommer ge dig det du förväntar dig av dem.

[Varning] Varning

Insticksmoduler är fullfjädrade körbara program och kan göra allt som andra program kan. Detta inkluderar att installera bakdörrar i ditt system eller på något annat sätt äventyra dess säkerhet. Installera inte en insticksmodul såvida den inte kommer från en pålitlig källa.

[Notera] Notera

Insticksmoduler som skrivits för en viss GIMP-version kommer kanske inte alltid fungera bra i andra versioner. GIMP-gruppen försöker dock i allmänhet minimera ändringar som påverkar insticksmoduler. Vanligen är det endast när den större GIMP-versionen ändras som du kan förvänta dig allvarliga problem. När en insticksmodul som gjorts för en äldre version inte fungerar korrekt längre så måste den porteras. Ibland är detta lätt, ibland inte. För att summera: se innan du försöker installera en insticksmodul till att den är kompatibel med din version av GIMP.

1.2. Använda insticksmoduler

För det mesta kan du använda en insticksmodul som vilket GIMP-verktyg som helst utan behöva känna till att den är en insticksmodul. Men det finns några saker om insticksmoduler som kan vara bra att känna till.

En av dessa är att insticksmoduler i allmänhet inte är lika robusta som själva GIMP-kärnan. När GIMP kraschar anses det vara en allvarlig sak: det kan orsaka en hel del problem och huvudvärk för användare. Men när en insticksmodul kraschar är följderna vanligen inte lika allvarliga. I de flesta fall kan man arbeta vidare utan att oroa sig så mycket över det.

[Notera] Notera

På grund av att insticksmoduler är separata program kommunicerar de med GIMP-kärnan på ett speciellt sätt: GIMP-utvecklarna kallar detta talking over a wire. När en insticksmodul kraschar bryts kommunikationen och du kommer se ett felmeddelande om ett wire read error.

[Tips] Tips

När en insticksmodul kraschar ger GIMP dig ett illavarslande meddelande som talar om för dig att insticksmodulen kan ha lämnat GIMP i ett skadat tillstånd och att du borde överväga att spara dina bilder och avsluta. Helt strikt så är detta helt korrekt, då insticksmoduler har förmågan att ändra nästan allt i GIMP, men i praktiken har erfarenheten visat att sådan skada är ganska sällsynt och de flesta användare kan fortsätta med sitt arbete utan oroa sig för det. Vårt råd är att fundera på hur mycket problem det kan ställa till och väga det mot oddsen.

På grund av det sätt som insticksmoduler kommunicerar med GIMP, har de ingen mekanism för att hålla sig informerade om ändringar du gör i en bild efter att insticksmodulen har startats. Om du startar en insticksmodul och sedan ändrar i en bild med ett annat verktyg, kan insticksmodulen komma att krascha. Även om den inte gör det kan att göra detta orsaka felaktiga resultat. Du bör undvika att köra mer än en insticksmodul i taget på en bild och undvika att göra något på bilden tills insticksmodulen avslutat sin körning på den. Om du bortser från detta råd kan du inte bara förstöra bilden, utan även få ångringssystemet att balla ur så att du inte kan återvända från ditt misstag.

1.3. Installera nya insticksmoduler

De insticksmoduler som distribueras med GIMP kräver ingen installation. Det gör dock insticksmoduler som du hämtar själv. Vanligen är standardplatsen i GIMPs användarkatalog i en mapp under /plug-ins, där mappnamnet behöver vara detsamma som insticksmodulens filnamn. Du kan hitta standardplatserna där GIMP söker insticksmoduler i GIMPs mappinställningar. Där kan du också lägga till nya platser som GIMP ska söka insticksmoduler på. Det finns flera scenarier beroende på vilket operativsystem du använder och hur insticksmodulen är strukturerad.

1.3.1. Linux / Unix-liknande system

De flesta insticksmoduler faller in under två kategorier: de mindre som distribueras som en enda .c-fil och de större vars källkod är distribuerad i en mapp som innehåller flera filer, däribland en Makefile.

För en enkel insticksmodul bestående av en fil, låt oss kalla den borker.c, handlar installationen bara om att köra kommandot gimptool-2.0 --install borker.c. Detta kommando kompilerar insticksmodulen och installerar den i din personliga instickskatalog, ~/gimp-2.10/plugins såvida du inte har ändrat den. Det gör att den läses in automatiskt nästa gång du startar GIMP. Du behöver inte vara root för att göra detta, och bör faktiskt undvika det. Om insticksmodulen misslyckas att kompileras, var lite kreativ.

1.3.2. Windows

De flesta GIMP-insticksmoduler som finns tillgängliga på Windows tillhandahåller antingen ett installationsprogram, eller kan hämtas i ett förkompilerat binärt format som är klart att kopieras till en mapp du väljer som är känd av GIMP.

Om ett installationsprogram är tillgängligt så bör det göra allt arbete åt dig med att välja en lämplig mapp och kopiera alla relevanta filer. Om inte så kan du behöva se i GIMPs mappinställningar var insticksmodulerna ska kopieras. Kom ihåg att varje insticksmodul behöver vara i sin egen mapp med samma namn som insticksmodulen.

1.3.3. Apple Mac OS X

Hur du installerar insticksmoduler i OS X beror mest på hur du installerade GIMP som sådant. Om du var en av de djärva och installerade GIMP genom en av pakethanterarna som fink [FINK] eller darwinports [DARWINPORTS] fungerar insticksinstallationen exakt på samma sätt som redan beskrivits för Linuxplattformen. Den enda skillnaden är att ett par insticksmoduler till och med kan finnas tillgängliga i förrådet för din pakethanterare, så prova det.

Om du å andra sidan föredrar att hugga ett förbyggt GIMP-paket som GIMP.app, kommer du förmodligen vilja ha en förbyggd insticksmodul också. Du kan försöka få tag på en förbyggd version av dina drömmars insticksmodul från skaparen av denna insticksmodul. Att bygga egna binärer involverar dessvärre att installera GIMP.

1.3.4. Köra den installerade insticksmodulen

Hur aktiverar du insticksmodulen när du väl installerat den? Menysökvägen bestäms av själva insticksmodulen, så svaret är att du antingen måste se dokumentationen för insticksmodulen (om sådan finns), utforska menyerna, eller använda GIMPs kommandosökfunktion genom att trycka / och sedan mata in namnet på insticksmodulen. Om du kan läsa källkod kan du också titta på den för att se i vilken meny insticksmodulen registrerar sig själv.

För mer komplicerade insticksmoduler som är organiserade i en katalog med flera filer så finns det vanligen en fil som kallas antingen INSTALL eller README med instruktioner. Om inte så är det bäst att slänga insticksmodulen i papperskorgen och ägna din tid åt något annat: kod som är skriven med så lite omsorg för användaren kommer förmodligen vara frustrerande på många sätt.

Om du installerar en insticksmodul i din personliga instickskatalog som har samma namn som en i systemets instickskatalog kan endast en läsas in, och det är den i din hemmapp. Du kommer få meddelanden om detta varje gång du startar GIMP. Det är en situation som är bäst att undvika.

1.4. Skriva insticksmoduler

Om du vill lära dig att skriva en insticksmodul hittar du gott om hjälp på GIMP-utvecklarnas webbplats [GIMP-DEV-PLUGIN]. GIMP är ett komplext program, men utvecklargruppen har gjort stora ansträngningar för att sänka inlärningströskeln för skrivning av insticksmoduler: det finns bra instruktioner och exempel och huvudbiblioteket som insticksmoduler använder som gränssnitt till GIMP (som kallas libgimp) har ett väldokumenterat API. Bra programmerare, som lär sig genom att modifiera befintliga insticksmoduler kan ofta åstadkomma intressanta saker efter bara ett par dagars arbete.