-- Darktable Erweiterung durch Lua Skripte
Vielen Darktable User ist garnicht bekannt, dass man Darktable seit Version 1.4 mit Lua Skripten erweitern kann. Lua ist eine plattformunabhänginge Skriptsprache, bei der das Skript vor der Ausführung in Bytecode übersetzt wird. Mit dem in Darktable integrierten Lua Skriptinterpeter kann man nicht nur einfache Batchskripte über Tastaturkürzel ausführen lassen, sondern auch eigene Dialoge / Module mit Schaltknöpfen, Schiebern usw. erstellen.
Da man zu den Darktable Lua Skripten wenig im Netzt findet, habe ich mich entschlossen hier mal einige Vorzustellen und die Installationen zu erklären.
Installationen von Darktable Lua Skripten
Damit die Lua Skripte laufen können, muss natürlich erst mal die Skriptsprache Lua 5.2 (darktable 2.2.X) bzw. Lua 5.3 (darktable 2.4.X) installiert werden.
Für die Installation von Lua auf Ubuntu führen Sie folgendes aus:
sudo apt-get update sudo apt-get install liblua5.2-0 liblua5.2-dev lua5.2 lua5.2-doc
bzw.
sudo apt-get update sudo apt-get install liblua5.3-0 liblua5.3-dev lua5.3 lua5.3-doc
Jetzt laden wir die für Darktable bereitgestellten Skripte herunter. Das Zip-Archiv können Sie über die Schaltfläche "Clone or Download" bei https://github.com/darktable-org/lua-scripts herunterladen. Speichern Sie das Zip-Archiv unter ~/.config/darktable/ ab.
Mit den folgenden Befehlen entpacken wir das Zip-Archiv, benennen das Verzeichnis um und löschen das Zip Archiv wieder.
unzip lua-scripts-master.zip mv lua-scripts-master lua
rm lua-scripts-master.zip
Die Verzeichnisstruktur sollte jetzt wie folgt aussehen:
Alle Darktable Lua Skripte werden abgespeichert im Skriptverzeichnis ~/.config/darktable/lua
In diesen Verzeichnis befinden sich die folgenden Unterverzeichnisse:
Skript Verzeichnis | Beschreibung / Verwendung |
official | In den Verzeichnis "official" werden die Skripte abgespeichert, die vom darktable Team erstellt wurden. |
example | In den Verzeichnis "example" befinden sich Beispielskipte für Entwickler. Die Skripte zeigen nur Möglichkeiten auf und haben keine weitere Verwendung |
contrib | In das Verzeichnis "contrib" werden alle dt lua Skripte abgespeichert, die von Anwendern oder externen Entwickler die nicht im dt Team sind abgespeichert. |
Damit die Skripte beim Start eingebunden werden, müssen wir im Verzeichnis ~/.config/darktable die Textdatei luarc anlegen. Öffnen Sie einen ASCII Texteditor und fügen z.B. folgendes ein und speichern die Datei unter ~/.config/darktable/luarc ab:
Beispiel Inhalt der luarc Datei für datktable 2.0.X (bei 2.2.X entfällt require "official/yield"):
require "official/yield"
require "official/image_path_in_ui"
require "contrib/hugin"
require "contrib/clear_GPS"
require "contrib/copy_attach_detach_tags"
require "contrib/database_statistics"
require "examples/moduleExample"
require "examples/preferenceExamples"
Das Skript yield wird benötigt, damit externe Programme gestarten werden können. Fügen Sie die Skriptzeile daher immer als erstes ein, sonst funktionieren einige Programme nicht!
Die anderen Skripte können analog hinzugefügt werden.
ACHTUNG:
Nicht alle Skripte laufen fehlerfrei, wenn ein Skipt einen Error erzeugt, dann kann es sein, dass die anderen Skripte auch nicht funktionieren!
Zum Testen, ob die Lua Skripte fehlerfrei laufen, sollen Sie darktable über die Konsole/Terminal mit dem folgenden Befehl starten:
darktable -d lua
Wenn keine Fehlermeldungen auftreten, dann sollen die Skripte laufen. Das Skript image_path_in_ui zeigt im Leuchttisch auf der linken Seite unterhalb der Sammlung den Pfad vom ausgewählten Foto an.
Übersicht Lua Plugin für Darktable
Hier eine Übersicht der aktuellen Lua Skripte von https://github.com/darktable-org/lua-scripts (Stand 10.09.2016). Den Link zum Download meiner Lua Skripte finden Sie in der Tabelle.
Skript | Verzeichnis | Abhänigkeiten | Funktion |
check_for_updates.lua | official |
|
a simple script that will automatically look for newer releases on github and inform when there is something. it will only check on startup and only once a week. |
copy_paste_metadata.lua | official |
|
ADD SUPPORT FOR COPYING METADATA+RATING+COLOR LABELS+TAGS BETWEEN IMAGES This script adds keyboard shortcuts and buttons to copy/paste metadata between images. |
debug-helpers.lua | official |
|
A collection of helper functions to help debugging lua scripts. |
delete_long_tags.lua | official |
|
DELETE LONG TAGS A simple script that will automatically delete all tag longer than a set length |
enfuse.lua | official |
|
RUN ENFUSE ON THE SELECTED IMAGES Skript funktioniert bei mir nicht. |
generate_image_txt.lua | official |
|
A script to run a command on images to generate text metadata. The medata will be displayed as an overlay on the image in lighttable mode |
image_path_in_ui.lua | official |
|
IMAGE_PATH_IN_UI Add a widget with the path of the selected images for easy copy/past Simple shortcuts to have multiple selection bufers |
import_filter_manager.lua | official |
|
IMPORT FILTER MANAGER Skript funktioniert bei mir nicht. |
import_filters.lua | official |
|
EXAMPLE IMPORT FILTERS Skript funktioniert bei mir nicht. |
save_selection.lua | official | SAVE SELECTION Simple shortcuts to have multiple selection bufers |
|
selection_to_pdf.lua | official |
|
SELECTION_TO_PDF Generates a PDF file (via Latex) containing all selected images |
yield.lua | official |
|
Diese Skript wird von darktable benötigt, um mit anderen Skripten externe Programme starten zu können. Fügen Sie das Skript in die erste Zeile von der luarc ein. |
autostyle.lua | contrib |
|
Autostyle Automatically apply a given style when an exif tag is present in the file. This tagged is checked with exiftool, in order to be able to match very exotic tags. I wrote this initially to be able to apply a style to compensate for Auto-DR from my Fujifilm camera |
calcDistance.lua | contrib |
|
darktable calc distance script Benutzung: Über Tastaturkürzel starten. |
clear_GPS.lua | contrib |
|
clear_GPS - clear GPS data from selected image(s) Benutzung: Foto selektieren und Skript über Tastaturkürzel starten. |
copy_attach_detach_tags.lua | contrib |
|
(MULTI-)COPY ATTACH DETACH REPLACE TAGS Benutzung: Tastaturkürzel für copy, attatch und delete vergeben und anwenden. |
cr2hdr.lua | contrib |
|
cr2hdr Magic Lantern Dual ISO processing for some Canon DSLR. |
geoJSON_export.lua | contrib |
|
darktable geoJSON export script |
geo_uri.lua | contrib |
|
darktable script to open a geo uri in gnome-maps |
gimp.lua | contrib |
|
gimp - export an image and open with GIMP for editing This script provides another storage (export target) for darktable. Selected |
gps_select.lua | contrib |
|
darktable select images with or without GPS informations Benutzung: Über Tastaturkürzel |
hugin.lua | contrib |
|
HUGIN Add a new storage option to send images to hugin. Images are exported to darktable tmp dir first. |
kml_export.lua | contrib |
|
darktable KML export script |
rate_group.lua | contrib |
|
Rate Group: Benutzung: Tastatur kürzel vergeben und benutzen. |
slideshowMusic.lua | contrib |
|
darktable Script to play music during a Slideshow |
video_mencoder.lua | contrib |
|
darktable video export script |
api_version.lua | examples |
|
darktable script to show the Lua API version in the preferences |
gettextExample.lua | examples |
|
darktable script to show how translations works To create the .po file run: xgettext is not a lua tool, it knows (almost) nothing about Lua, and not To create a .mo file run: |
hello_world.lua | examples |
|
HELLO WORLD prints "hello world when DT starts |
moduleExample.lua | examples |
|
Modul Example Demo |
preferenceExamples.lua | examples |
|
darktable script to show the different preference types that are possible with Lua |
database_statistics.lua Download für darktable
Download für darktable Download für darktable |
bitte skript abspeichern im Verzeichnis contrib |
|
Mit dem Skript kann man eine Statistik von der Darktable Datenbank erstellen. |
steghideexport.lua Download für darktable
Download für darktable Download für darktable Download für darktable |
bitte skript abspeichern im Verzeichnis contrib |
|
Mit den Skript kann man eine ASCII Text Datei unsichtbar und passwortgeschützt in ein JPEG einbetten. |
gpsbabel.lua (Skript von Multimedia4Linux) Download für darktable |
bitte skript abspeichern im Verzeichnis contrib |
|
Mit dem Skript kann man die Logdaten von einem GPS Gerät herunterladen bzw. Logdaten konvertieren. |
contact_print.lua (Skript von Multimedia4Linux) Download für darktable Download für darktable Download für darktable |
bitte skript abspeichern im Verzeichnis contrib |
|
Mit dem Skript kann man digitale Kontaktabzüge erstellen. |
enfuse_pro.lua (Skript von Multimedia4Linux) Download für darktable 2.2.X (Linux)
|
bitte skript abspeichern im Verzeichnis contrib |
|
Mit dem Skript kann man aus einer Belichtungsreihe ein DRI Foto erzeugen bzw. Focus Stacking (DFF) durchführen. Das Skript benutzt enfuse 4.2 zum Verschmelzen der Bilder. |
pano_pro.lua (Skript von Multimedia4Linux) Download für darktable Download für darktable Download für darktable |
bitte skript abspeichern im Verzeichnis contrib |
|
Mit dem Skript kann man aus zwei oder mehr Bildern in wenigen Schritten ein Panoramabild erstellen. Das Skript benutzt dafür die Utilities von Hugin und enblend. |
slideshowexport.lua (Skript von Multimedia4Linux) Download für darktable Download für darktable Download für darktable |
bitte skript abspeichern im Verzeichnis contrib |
|
Mit dem Skript kann man sehr einfach und schnell eine Diashow Video mit Titelszene und Abspann erstellen. |
Darktable LUA Plugin in deutsch
Einige Skripte kann man sich auch in deutsch übersetzen lassen. Wechsen Sie dazu in das Verzeichnis mit den po Dateien z.B. ~/.config/darktable/lua/contrib/de_DE/LC_MESSAGES.
Mit dem folgenden Befehl können Sie z.B. die Übersetzung für das database_statistics.lua Skript erstellen:
msgfmt -v database_statistics.po -o database_statistics.mo
Kopieren Sie jetzt noch die erstellten mo Datei nach:
~/.config/darktable/lua//de_DE/LC_MESSAGES
Falls das Verzeichnis noch nicht existiert, dann legen Sie es vorher an. Nach einem Neustart von darktable sollten die eingebundenen und übersetzten Skripte in deutsch erscheinen.
Skripte selber erstellen
Im Moment gibt es noch nicht viele Skripte für Darktable und einige die es gibt funktionieren nicht. Ich hoffe, dass sich das mit diesem Artikel bessern wird. Lua soll leicht zu erlernen sein und sehr flexiebel. Mit Lua kann man sogar Funktionen aus C-Bibliotheken nutzen.
Für alle die sich mit der Skripterstellung beschäftigen wollen hier noch einige nüzuliche Links:
- Darktable Lua API als PDF
- Darktable Lua API Online
- Lua Homepage
- Lua Dokumentation in deutsch als PDF
- Hier ein Lua Skirpt, das alle Darktable GUI Elemente zeigt
Ich würde mich freuen, wenn Sie mich informieren, wenn Sie ein Darktable Lua Skript erstellt haben. Gerne werde ich dann in meinem Blog erwähnen.