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 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

 

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:

 

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
  • luase
    (sudo apt-get install lua-sec)
  • cjson
    (sudo apt-get install lua-cjson)
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
  •   keine
 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  
  • keine
 A collection of helper functions to help debugging lua scripts.
 delete_long_tags.lua official  
  • keine
 DELETE LONG TAGS
A simple script that will automatically delete all tag longer than a set length
 enfuse.lua official
  •  yield.lua
  • enfuse

 RUN ENFUSE ON THE SELECTED IMAGES
This script uses enfuse to merge the selected images into one HDR and imports the result.
It only works on ldr images (like, JPEG).

Skript funktioniert bei mir nicht.

 generate_image_txt.lua official
  •  Keine

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
  •  Keine
 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_filters.lua 

IMPORT FILTER MANAGER
This script adds a dropdown list with import filters to the import dialog.
Scripts can add new filters by registering them with
  darktable.register_import_filter(name, callback)
The callback has type function(event, images), i.e., it is the same as when
directly registering the pre-import event.

Skript funktioniert bei mir nicht.

 import_filters.lua official  
  • Keine

 EXAMPLE IMPORT FILTERS
This script goes along with the import filter manager. It adds two filters:
* ignore jpegs: this one does the same as the existing option in the import dialog
                and just skips all JPEGs during import.
* prefer raw over jpeg: this one is a bit more elaborate, it ignores JPEGs when there
                        is also another file with the same basename, otherwise it
                        allows JPEGs, too.

Skript funktioniert bei mir nicht.

 save_selection.lua official   SAVE SELECTION
Simple shortcuts to have multiple selection bufers
 selection_to_pdf.lua official
  • yield.lua
  • PDF Viewer
  • pdflatex
SELECTION_TO_PDF
Generates a PDF file (via Latex) containing all selected images
 yield.lua official
  •  Keine
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  
  • Keine
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  
  • Keine

darktable calc distance script
This script calcs the distance between two images using the GPS data in the metadata.

Benutzung: Über Tastaturkürzel starten.

 clear_GPS.lua contrib
  •  Keine

clear_GPS - clear GPS data from selected image(s)
This shortcut removes the GPS coordinate data from the selected images.

Benutzung: Foto selektieren und Skript über Tastaturkürzel starten.

 copy_attach_detach_tags.lua contrib
  • Keine 

 (MULTI-)COPY ATTACH DETACH REPLACE TAGS
 This script that will create four shortcuts and add a modul in lighttable mode to copy, paste, replace and remove tags from images.

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.
This script automates the steps involved to process an image created
with the Magic Lantern Dual ISO module. Upon invoking the script with a
shortcut "cr2hdr" provided by Magic Lantern is run on the selected
images. The processed files are imported. They are also made group
leaders to hide the original files.

 geoJSON_export.lua contrib  
  • yield.lua
  • mkdir
  • convert (ImageMagick)
  • xdg-open
  • xdg-user-dir
 darktable geoJSON export script
 geo_uri.lua contrib
  •  gnome-maps >= 3.20
 darktable script to open a geo uri in gnome-maps
 gimp.lua contrib
  • yield.lua 
  • Gimp
 

gimp - export an image and open with GIMP for editing

    This script provides another storage (export target) for darktable.  Selected
    images are exported in the specified format to temporary storage.  GIMP is launched
    and opens the files.  After editing, the exported images are overwritten to save the
    changes.  When GIMP exits, the exported files are moved into the current collection
    and imported into the database.  The imported files then show up grouped with the
    originally selected images.

 gps_select.lua contrib
  •  Keine

 darktable select images with or without GPS informations

Benutzung: Über Tastaturkürzel

 hugin.lua contrib
  • yield.lua 
  • Hugin
HUGIN
Add a new storage option to send images to hugin.
Images are exported to darktable tmp dir first.
 kml_export.lua contrib
  • yield.lua 
  • mkdir
  • zip (only if you create KMZ files)
  • convert (ImageMagick)
  • xdg-open
  • xdg-user-dir
 darktable KML export script
 rate_group.lua contrib
  •  Keine

Rate Group:
Script to provide shortcuts for rating or rejecting all images within a group;
particularly useful for RAW+JPEG shooters employing a star rating workflow
like the below:

Benutzung: Tastatur kürzel vergeben und benutzen.
Reject group: Ctrl+R
Rate group 1: Ctrl+1
Rate group 2: Ctrl+2
Rate group 3: Ctrl+3
Rate group 4: Ctrl+4
Rate group 5: Ctrl+5
Rate group 0: Ctrl+0

 slideshowMusic.lua contrib
  •  rhythmbox-client
 darktable Script to play music during a Slideshow
 video_mencoder.lua contrib
  • yield.lua 
  • mencoder (MEncoder is from the MPlayer Team)
  • xdg-open
  • xdg-user-dir
 darktable video export script
 api_version.lua examples
  •  Keine
 darktable script to show the Lua API version in the preferences
 gettextExample.lua examples
  • xgettext
  •  msgfmt
 

darktable script to show how translations works

To create the .po file run:
xgettext -l lua gettextExample.lua

xgettext is not a lua tool, it knows (almost) nothing about Lua, and not
enough to do a proper parsing. It takes a text file (In our case a Lua
file) and recognises a few (language dependant) keyword in there.
It matches those keywords with internal description on how functions are
called and creates the .po file accordingly. (For example, it knows that
the first argument of gettext() is the translated string, but that it's
the second argument for dgettext)
This is important because it means that if you use some neat Lua tricks
(like renaming functions) xgettext won't recognize those calls and won't
extract the string to the .po file.
So, this is why we create a local variagle gettext = dt.gettext, so
xgettext recognises gettext.gettext as a function but not dt.gettext.gettext

To create a .mo file run:
msgfmt -v gettextExample.po -o gettextExample.mo

 hello_world.lua examples
  •  Keine
HELLO WORLD
prints "hello world when DT starts
 moduleExample.lua examples
  •  Keine
 Modul Example Demo
 preferenceExamples.lua examples
  •  Keine

 darktable script to show the different preference types that are possible with Lua

database_statistics.lua
(Skript von Multimedia4Linux)

Download für dt 2.0.X:

database_statistisc-0.4.tar

 

Download für dt 2.2.X:

database_statistisc-2.1.tar

bitte abspeichern im Verzeichnis contrib
  • sqlite3
  • rm
  • grep
  • wc
  • du

Mit dem Skript kann man eine Statistik von der Darktable Datenbank erstellen.

steghideexport.lua
(Skript von Multimedia4Linux)

Download für dt 2.0.X:

steghide_export-0.2.tar

 

Download für dt 2.2.X:

steghide_export-2.1.tar

bitte abspeichern im Verzeichnis contrib
  • steghide
  • mv
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 dt 2.2.X:

gpsbabel-2.2.1.tar

bitte abspeichern im Verzeichnis contrib   
  • gpsbabel 1.5.4 oder neuer
Mit dem Skript kann man die Logdaten von einem GPS Gerät herunterladen bzw. Logdaten konvertieren

 

 

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.

database statistics 01

 

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:

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.

 

 

 

Joomla templates by a4joomla