luadocs/index.json
2020-12-18 21:50:11 +00:00

1 line
No EOL
116 KiB
JSON

[{"categories":null,"content":"🔗Name api_version.lua - show the Lua API version\n🔗Description darktable script to show the Lua API version in the preferences\n🔗Usage require this script from your main lua file 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/api_version/","tags":null,"title":"api_version"},{"categories":null,"content":"🔗Name AutoGrouper.lua - add the module \u0026ldquo;Auto Group\u0026rdquo; to darktable\u0026rsquo;s lighttable view\n🔗Description This plugin adds the module \u0026ldquo;Auto Group\u0026rdquo; to darktable\u0026rsquo;s lighttable view\n🔗Usage Install: (see here for more detail: https://github.com/darktable-org/lua-scripts )\n Copy this file in to your \u0026ldquo;lua/contrib\u0026rdquo; folder where all other scripts reside. Require this file in your luarc file, as with any other dt plug-in Set a gap amount in second which will be used to determine when images should no longer be added to a group. If an image is more then the specified amount of time from the last image in the group it will not be added. Images without timestamps in exif data will be ignored.\nThere are two buttons. One allows the grouping to be performed only on the currently selected images, the other button performs grouping on the entire active collection\n🔗Additional Software Required 🔗Limitations 🔗Author Kevin Ertel\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/autogrouper/","tags":null,"title":"AutoGrouper"},{"categories":null,"content":"🔗Name check_for_updates.lua - automatically check for updates\n🔗Description 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.\n🔗Usage install luasec and cjson for Lua 5.2 on your system require this script from your main lua file restart darktable 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/check_for_updates/","tags":null,"title":"check_for_updates"},{"categories":null,"content":"🔗NAME dtutils.debug\n🔗SYNOPSIS debugging helpers used in developing darktable lua scripts\n🔗USAGE require \u0026quot;lib/dtutils.debug\u0026quot; 🔗DESCRIPTION dtutils.debug provides an interface to the darktable debugging routines.\n🔗RETURN VALUE dd - library - the darktable lua debugging helpers\n🔗FUNCTIONS 🔗dprint pass a variable to darktable.debug.dump and print the results to stdout\n🔗new_tracepoint create a function returning a tracepoint\n🔗terse_dump set darktable.debug.known to shorten all image dumps to a single line\n🔗tracepoint print out a tracepoint and dump the arguments\n🔗LICENSE 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/.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.debug/details/","tags":null,"title":"details"},{"categories":null,"content":"🔗NAME details\n🔗SYNOPSIS common darktable lua file functions\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; 🔗DESCRIPTION The dtutils.file library provides common file manipulation functions used in constructing darktable lua scripts\n🔗RETURN VALUE df - library - the file functions\n🔗FUNCTIONS 🔗check_if_bin_exists check if an executable exists\n🔗check_if_file_exists check if a file or path exist\n🔗chop_filetype remove a filetype from a filename\n🔗create_unique_filename create a unique filename from the supplied argment\n🔗executable_path_widget create a widget to get executable path preferences\n🔗file_copy copy a file to another name/location\n🔗file_move move a file from one directory to another\n🔗filename_increment add a two digit increment to a filename\n🔗get_basename get the filename without the path or extension\n🔗get_executable_path_preference return the path to an executable from a preference\n🔗get_filename get the filename and extension from a file path\n🔗get_filetype get the filetype from a filename\n🔗get_path get the path from a file path\n🔗mkdir create the directory(ies) if they do not already exists\n🔗rmdir recursively remove a directory\n🔗sanitize_filename make a filename safe to pass as an argument\n🔗set_executable_path_preference set a preference for the path to an executable\n🔗split_filepath split a filepath into parts\n🔗LICENSE 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/.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/details/","tags":null,"title":"details"},{"categories":null,"content":"🔗NAME dtutils.log\n🔗SYNOPSIS darktable lua logging library\n🔗USAGE local log = require \u0026quot;lib/dtutils.log\u0026quot; 🔗DESCRIPTION log provides a multi-level logging solution for use with the darktable lua scripts. With this library you can leave log messages scattered through out your code and only turn them on as necessary.\n🔗RETURN VALUE log - library - the darktable lua logging functions\n🔗FUNCTIONS 🔗caller get the name and line number of the calling routine\n🔗engine get and set the output engine\n🔗log_level get or set the log level\n🔗msg print a log message\n🔗EXAMPLE local log = require \u0026quot;lib/dtutils.log\u0026quot; local cur_level = log.log_level() log.log_level(log.warn) print out warning, error and success messages as code is running\nlog.log_level(debug) print out debugging messages too because this isnt working\nlog.log_level(info) I want to make sure this is working ok\nlog.log_level(cur_level) reset the logging level back to normal\n🔗LICENSE 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/.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.log/details/","tags":null,"title":"details"},{"categories":null,"content":"🔗DTUTILS.STRING 🔗NAME dtutils.string\n🔗SYNOPSIS a library of string utilities for use in darktable lua scripts\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; 🔗DESCRIPTION This library contains string manipulation routines to aid in building darktable lua scripts.\n🔗RETURN VALUE ds - library - the darktable lua string library\n🔗FUNCTIONS 🔗escape_xml_characters escape characters for xml documents\n🔗is_not_sanitized check if a string has been sanitized\n🔗sanitize surround a string in quotes making it safe to pass as an argument\n🔗sanitize_lua escape lua \u0026lsquo;magic\u0026rsquo; characters from a pattern string\n🔗strip_accents strip accents from characters\n🔗urlencode encode a string in a websafe manner\n🔗LICENSE 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/.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/details/","tags":null,"title":"details"},{"categories":null,"content":"🔗DTUTILS.SYSTEM 🔗NAME dtutils.system\n🔗SYNOPSIS a library of system utilities for use in darktable lua scripts\n🔗USAGE local dtsys = require \u0026quot;lib/dtutils.system\u0026quot; 🔗DESCRIPTION This library contains routines for interfacing to the operating system from darktable lua scripts.\n🔗RETURN VALUE dtsys - library - the darktable lua system library\n🔗FUNCTIONS 🔗external_command pass a command to the operating system for execution and return the result\n🔗launch_default_app open file in default application\n🔗windows_command pass a command to the windows operating system for execution and return the result\n🔗LICENSE 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/.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.system/details/","tags":null,"title":"details"},{"categories":null,"content":"🔗NAME dtutils\n🔗SYNOPSIS A Darktable lua utilities library\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; 🔗DESCRIPTION dtutils provides a common library of functions used to build lua scripts.\n🔗RETURN VALUE du- library - the library of functions\n🔗FUNCTIONS 🔗check_min_api_version check the minimum required api version against the current api version\n🔗check_os check that the operating system is supported\n🔗join join a table of strings with a specified separator\n🔗prequire a protected lua require\n🔗spairs an iterator that provides sorted pairs from a table\n🔗split split a string on a specified separator\n🔗SEE ALSO dtutils.debug, dtutils.file, dtutils.log, dtutils.string, dtutils.system\n🔗LICENSE 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/.\n🔗COPYRIGHT Copyright (C) 2016 Bill Ferguson wpferguson@gmail.com.\nCopyright (C) 2016 Tobias Jakobs\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/details/","tags":null,"title":"details"},{"categories":null,"content":"🔗Name executable_manager.lua - a tool for managing external executables used by darktable lua scripts\n🔗Description executable_manager is a tool for managing the executable preferences stored in the darktablerc file. On startup the darktablerc file is scanned and a widget is built for each executable path. The user can select the executable from a drop down list and then modify the settings as desired.\nAny changes made using executable_manager won\u0026rsquo;t be saved in the darktablerc file until darktable exits, but the preference is updated when the change is made so scripts will pick up the changes without restarting darktable.\n🔗Usage 🔗Additional Software Required None\n🔗Limitations 🔗Author Bill Ferguson - wpferguson@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/tools/executable_manager/","tags":null,"title":"executable_manager"},{"categories":null,"content":"darktable can be customized and extended using the Lua programming language. The lua-scripts repository contains the collected efforts of the darktable developers, maintainers, contributors and community.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/overview/","tags":null,"title":"overview"},{"categories":null,"content":"darktable can be customized and extended using the Lua programming language. The lua-scripts repository contains the collected efforts of the darktable developers, maintainers, contributors and community. The following sections list the scripts contained in the repository, whether they can be run by themselves (Standalone - Yes) or depend on other scripts (Standalone - No), what operating systems they are known to work on (L - Linux, M - MacOS, W - Windows), and their purpose.\n🔗Official Scripts These scripts are written primarily by the darktable developers and maintained by the authors and/or repository maintainers. They are located in the official/ directory.\n Name Standalone Op/Sys Purpose check_for_updates Yes LMW Check for updates to darktable copy_paste_metadata Yes LMW Copy and paste metadata, tags, ratings, and color labels between images delete_long_tags Yes LMW Delete all tags longer than a specified length delete_unused_tags Yes LMW Delete tags that have no associated images enfuse No L Exposure blend several images (HDR) generate_image_txt No L Generate txt sidecar files to be overlaid on zoomed images image_path_in_ui Yes LMW Plugin to display selected image path import_filter_manager Yes LMW Manager for import filters import_filters No LMW Two import filters for use with import_filter_manager save_selection Yes LMW Provide save and restore from multiple selection buffers selection_to_pdf No L Generate a PDF file from the selected images 🔗Contributed Scripts These scripts are contributed by users. They are meant to have an \u0026ldquo;owner\u0026rdquo;, i.e. the author, who maintains them. Over time the community has helped maintain these scripts, as well as the authors. They are located in the contrib/ directory.\n Name Standalone Op/Sys Purpose AutoGrouper Yes LMW Group images together by time autostyle Yes LMW Automatically apply styles on import clear_GPS Yes LMW Reset GPS information for selected images CollectHelper Yes LMW Add buttons to selected images module to manipulate the collection copy_attach_detach_tags Yes LMW Copy and paste tags from/to images cr2hdr Yes L Process image created with Magic Lantern Dual ISO enfuseAdvanced No LMW Merge multiple images into Dynamic Range Increase (DRI) or Depth From Focus (DFF) images exportLUT Yes LMW Create a LUT from a style and export it ext_editor No LW Export pictures to collection and edit them with up to nine user-defined external editors face_recognition No LM Identify and tag images using facial recognition fujifilm_ratings No LM Support importing Fujifilm ratings geoJSON_export No L Create a geo JSON script with thumbnails for use in \u0026hellip; geoToolbox No LMW A toolbox of geo functions gimp No LMW Open an image in GIMP for editing and return the result gpx_export No LMW Export a GPX track file from selected images GPS data HDRMerge No LMW Combine the selected images into an HDR DNG and return the result hugin No LMW Combine selected images into a panorama and return the result image_stack No LMW Combine a stack of images to remove noise or transient objects image_time Yes LMW Adjust the EXIF image time kml_export No L Export photos with a KML file for usage in Google Earth LabelsToTags Yes LMW Apply tags based on color labels and ratings OpenInExplorer No LMW Open the selected images in the system file manager passport_guide Yes LMW Add passport cropping guide to darkroom crop tool pdf_slideshow No LM Export images to a PDF slideshow photils No LM Automatic tag suggestions for your images quicktag.md Yes LMW Create shortcuts for quickly applying tags rate_group Yes LMW Apply or remove a star rating from grouped images rename-tags Yes LMW Change a tag name RL_out_sharp No LW Output sharpening using GMic (Richardson-Lucy algorithm) select_untagged Yes LMW Enable selection of untagged images slideshowMusic No L Play music during a slideshow transfer_hierarchy Yes LMW Image move/copy preserving directory hierarchy video_ffmpeg No LMW Export video from darktable 🔗Example Scripts These scripts provide examples of how to use specific portions of the API. They run, but are meant for demonstration purposes only. They are located in the examples/ directory.\n Name Standalone Op/Sys Purpose api_version Yes LMW Print the current API version darkroom_demo Yes LMW Demonstrate changing images in darkoom gettextExample Yes LM How to use translation hello_world Yes LMW Prints hello world when darktable starts lighttable_demo Yes LMW Demonstrate controlling lighttable mode, zoom, sorting and filtering moduleExample Yes LMW How to create a lighttable module multi_os No LMW How to create a cross platform script that calls an external executable panels_demo Yes LMW Demonstrate hiding and showing darktable panels preferenceExamples Yes LMW How to use preferences in a script printExamples Yes LMW How to use various print functions from a script running_os Yes LMW Print out the running operating system 🔗Tools Tool scripts perform functions relating to the repository, such as generating documentation. They are located in the tools/ directory.\n Name Standalone Op/Sys Purpose executable_manager Yes LMW Manage the external executables used by the lua scripts gen_i18n_mo No LMW Generate compiled translation files (.mo) from source files (.po) get_lib_manpages No LM Retrieve the library documentation and output it in man page and PDF format get_libdoc No LMW Retrieve the library documentation and output it as text script_manager No LMW Manage (install, update, enable, disable) the lua scripts ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/overview/","tags":null,"title":"overview"},{"categories":null,"content":"🔗Name autostyle.lua - automatically apply a given style when an exif tag is present in the image file\n🔗Description 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\n🔗Usage set the exif configuration string in your lua configuration mine, for instance, is AutoDynamicRange=200%=\u0026gt;DR200\u0026quot; meaning that I automatically want to apply my DR200 style on all images where exiftool returns \u0026lsquo;200%\u0026rsquo; for the AutoDynamicRange tag if you want to be able to apply it manually to already imported images, define a shortcut (lua shortcuts). As I couldn\u0026rsquo;t find an event for when a development is removed, so the autostyle won\u0026rsquo;t be applied again, this shortcut is also helpful then import your images, or use the shortcut on your already imported images To determine which tag you want, list all tags with exiftool: exiftool -j XE021351.RAF, and find the one you want to use you can check it with exiftool -AutoDynamicRange XE021351.RAF Auto Dynamic Range : 200%\n 🔗Additional Software Required exiftool 🔗Limitations 🔗Author Marc Cousin - cousinmarc@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/autostyle/","tags":null,"title":"autostyle"},{"categories":null,"content":"🔗NAME caller\n🔗SYNOPSIS get the name and line number of the calling routine\n🔗USAGE local log = require \u0026quot;lib/dtutils.log\u0026quot; result = log.caller(level) level - number - the number of stack levels to go down to retrieve the caller routine information\n🔗DESCRIPTION caller gets the name and line number of the calling routine and returns it\n🔗RETURN VALUE result - string - the name and line number of the calling function or \u0026lsquo;callback: ' if the attempt to get the caller returns nil\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.log/caller/","tags":null,"title":"caller"},{"categories":null,"content":"🔗NAME check_if_bin_exists\n🔗SYNOPSIS check if an executable exists\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.check_if_bin_exists(bin) bin - string - the binary to check for\n🔗DESCRIPTION check_if_bin_exists checks to see if the specified binary exists. check_if_bin_exists first checks to see if a preference for the binary has been registered and uses that if found. The presence of the file is verified, then quoted and returned. If no preference is specified and the operating system is linux then the which command is used to check for a binary in the path. If found that path is returned. If no binary is found, false is returned.\n🔗RETURN VALUE result - string - the sanitized path of the binary, false if not found\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/check_if_bin_exists/","tags":null,"title":"check_if_bin_exists"},{"categories":null,"content":"🔗NAME check_min_api_version\n🔗SYNOPSIS check the minimum required application programming interface (API) version against the current API version\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; local result = du.check_min_api_version(min_api, script_name) min_api - string - the API version that the application was written for (example: \u0026ldquo;5.0.0\u0026rdquo;)\nscript_name - string - the name of the script\n🔗DESCRIPTION check_min_api_version compares the minimum API required for the application to run against the current API version. The minimum API version is typically the API version that was current when the application was created. If the minimum API version is not met, then an error message is printed saying the script_name failed to load, then an error is thrown causing the program to stop executing.\nThis function is intended to replace darktable.configuration.check_version(). The application code won\u0026rsquo;t have to be updated each time the API changes because this only checks the minimum version required.\n🔗RETURN VALUE result - boolean - true if the minimum API version is available, false if not.\n🔗LIMITATIONS When using the default handler on a script being executed from the luarc file, the error thrown will stop the luarc file from executing any remaining statements. This limitation does not apply to script_manger.\n🔗EXAMPLE check_min_api_version(\u0026quot;5.0.0\u0026quot;) does nothing if the API is greater than or equal to 5.0.0 otherwise an error message is printed and an error is thrown stopping execution of the script.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/check_min_api_version/","tags":null,"title":"check_min_api_version"},{"categories":null,"content":"🔗Name copy_paste_metadata.lua - copy and paste metadata between images\n🔗Description This script adds keyboard shortcuts and buttons to copy/paste metadata between images.\n🔗Usage require this script from your main lua file it adds buttons to the selected images module it adds two keyboard shortcuts 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/copy_paste_metadata/","tags":null,"title":"copy_paste_metadata"},{"categories":null,"content":"🔗Name darkroom_demo - an example script demonstrating how to control image display in darkroom mode\n🔗Description darkroom_demo is an example script showing how to control the currently displayed image in darkroom mode using lua.\n🔗Usage require this script from your main lua file 🔗Additional Software Required None\n🔗Limitations 🔗Author Bill Ferguson - wpferguson@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/darkroom_demo/","tags":null,"title":"darkroom_demo"},{"categories":null,"content":"🔗NAME dprint\n🔗SYNOPSIS pass a variable to darktable.debug.dump and print the results to stdout\n🔗USAGE local dd = require \u0026quot;lib/dtutils.debug\u0026quot; dd.dprint(var) var - variable - any variable that you want to see the contents of\n🔗DESCRIPTION dprint is a wrapper around darktable.debug.dump, will directly print to stdout, same calling convention\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.debug/dprint/","tags":null,"title":"dprint"},{"categories":null,"content":"🔗NAME escape_xml_characters\n🔗SYNOPSIS escape characters for xml documents\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; local result = ds.escape_xml_characters(str) str - string - the string that needs escaped\n🔗DESCRIPTION escape_xml_characters provides the escape sequences for\n\u0026quot;\u0026amp;\u0026quot;, '\u0026quot;', \u0026quot;'\u0026quot;, \u0026quot;\u0026lt;\u0026quot;, and \u0026quot;\u0026gt;\u0026quot; with the corresponding\n\u0026quot;\u0026amp;amp;\u0026quot;,\u0026quot;\u0026amp;quot;\u0026quot;, \u0026quot;\u0026amp;apos;\u0026quot;, \u0026quot;\u0026amp;lt;\u0026quot;, and \u0026quot;\u0026amp;gt;\u0026quot; .\n🔗RETURN VALUE result - string - the string containing escapes for the xml characters\n🔗REFERENCE https://stackoverflow.com/questions/1091945/what-characters-do-i-need-to-escape-in-xml-documents\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/escape_xml_characters/","tags":null,"title":"escape_xml_characters"},{"categories":null,"content":"🔗NAME external_command\n🔗SYNOPSIS pass a command to the operating system for execution and return the result\n🔗USAGE local dsys = require \u0026quot;lib/dtutils.system\u0026quot; local result = dsys.external_command(command) command - string - a string containing the command and arguments to be passed to the operating system for execution.\n🔗DESCRIPTION external_command passes a command to the operating system for execution and returns the results.\n🔗RETURN VALUE result - number = the return value signalling success or failure.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.system/external_command/","tags":null,"title":"external_command"},{"categories":null,"content":"🔗Name gen_i18n_mo - generate translation files from the source and place them in the appropriate locale directory\n🔗Description gen_i18n_mo finds all the .po files scattered throughout the script tree, compiles them into .mo files and places them in the correct locale directory for use by the gettext tools.\n🔗Usage 🔗Additional Software Required 🔗Limitations 🔗Author 🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/tools/gen_i18n_mo/","tags":null,"title":"gen_i18n_mo"},{"categories":null,"content":"🔗Download and Install The recommended method of installation is using git to clone the repository. This ensures that all dependencies on other scripts are met as well as providing an easy update path.\n🔗snap packages The snap version of darktable comes with lua included starting with version 2.4.3snap2.\nEnsure git is installed on your system. If it isn\u0026rsquo;t, use the package manager to install it. Then open a terminal and:\ncd ~/snap/darktable/current git clone https://github.com/darktable-org/lua-scripts.git lua 🔗flatpak packages Flatpak packages now use the internal lua interpreter.\nEnsure git is installed on your system. If it isn\u0026rsquo;t, use the package manager to install it. Then open a terminal and:\ncd ~/.var/app/org.darktable.Darktable/config/darktable git clone https://github.com/darktable-org/lua-scripts.git lua 🔗appimage packages These packages run in their own environment and don\u0026rsquo;t have access to a lua interpreter, therefore the scripts can\u0026rsquo;t run. The packagers could enable the internal interpreter, or allow the package to link the interpreter from the operating system, or bundle a copy of lua with the package. If you use one of these packages and wish to use the lua scripts, please contact the package maintainer and suggest the above fixes.\n🔗Linux and MacOS Ensure git is installed on your system. If it isn\u0026rsquo;t, use the package manager to install it. Then open a terminal and:\ncd ~/.config/darktable/ git clone https://github.com/darktable-org/lua-scripts.git lua 🔗Windows Ensure git is installed on your system. Git can be obtained from https://gitforwindows.org/, as well as other places. If you use the gitforwindows.org distribution, install the Git Bash Shell also as it will aid in debugging the scripts if necessary. Then open a command prompt and run:\ncd %LOCALAPPDATA%\\darktable git clone https://github.com/darktable-org/lua-scripts.git lua If you don\u0026rsquo;t have %LOCALAPPDATA%\\darktable you have to start dartable at least once, because the directory is created at the first start of darktable.\n🔗Enabling When darktable starts it looks for a file name ~/.config/darktable/luarc (%LOCALAPPDATA%\\darktable\\luarc for windows) and reads it to see which scripts to include. The file is a plain text file with entries of the form require \u0026quot;\u0026lt;directory\u0026gt;/\u0026lt;name\u0026gt;\u0026quot; where directory is the directory containing the scripts, from the above list, and name is the name from the above list. To include GIMP the line would be require \u0026quot;contrib/gimp\u0026quot;.\nThe recommended way to enable and disable specific scripts is using the script manager module. To use script manager do the following:\n🔗Linux or MacOS echo 'require \u0026quot;tools/script_manager\u0026quot;' \u0026gt; ~/.config/darktable/luarc 🔗Windows echo \u0026quot;require 'tools/script_manager'\u0026quot; \u0026gt; %LOCALAPPDATA%\\darktable\\luarc 🔗Snap echo 'require \u0026quot;tools/script_manager\u0026quot;' \u0026gt; ~/snap/darktable/current/luarc 🔗Flatpak echo require \u0026quot;tools/script_manager\u0026quot;' \u0026gt; ~/.var/app/org.darktable.Darktable/config/darktable/luarc You can also create or add lines to the luarc file from the command line:\necho 'require \u0026quot;contrib/gimp\u0026quot;' \u0026gt; ~/.config/darktable/luarc to create the file with a gimp entry\nor echo 'require \u0026quot;contrib/hugin\u0026quot;' \u0026gt;\u0026gt; ~/.config/darktable/luarc to add an entry for hugin.\nOn windows from a command prompt:\necho require \u0026quot;contrib/gimp\u0026quot; \u0026gt; %LOCALAPPDATA%\\darktable\\luarc to create the file with a gimp entry\nor echo require \u0026quot;contrib/hugin\u0026quot; \u0026gt;\u0026gt; %LOCALAPPDATA%\\darktable\\luarc to add an entry for hugin.\n🔗Disabling To disable a script open the luarc file in your text editor and insert -- at the start of the line containing the script you wish to disable, then save the file.\n🔗Updating To update the script repository, open a terminal or command prompt and do the following:\n🔗Snap cd ~/snap/darktable/current/lua git pull 🔗Flatpak cd ~/.var/app/org.darktable.Darktable/config/darktable/lua git pull 🔗Linux and MacOS cd ~/.config/darktable/lua/ git pull 🔗Windows cd %LOCALAPPDATA%\\darktable\\lua git pull ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/installation/","tags":null,"title":"installation"},{"categories":null,"content":"🔗NAME check_if_file_exists\n🔗SYNOPSIS check if a file or path exist\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.check_if_file_exists(filepath) filepath - string - a file or path to check\n🔗DESCRIPTION check_if_file_exists checks to see if a file or path exists.\n🔗RETURN VALUE result - boolean - true if the file or path exists, false if it doesn\u0026rsquo;t.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/check_if_file_exists/","tags":null,"title":"check_if_file_exists"},{"categories":null,"content":"🔗NAME check_os\n🔗SYNOPSIS check that the operating system is supported\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; local result = du.check_os(operating_systems) operating_systems - table - a table of operating system names such as {\u0026ldquo;windows\u0026rdquo;,\u0026ldquo;linux\u0026rdquo;,\u0026ldquo;macos\u0026rdquo;,\u0026ldquo;unix\u0026rdquo;}\n🔗DESCRIPTION check_os checks a supplied table of operating systems against the operating system the script is running on and returns true if the OS is in the list, otherwise false\n🔗RETURN VALUE result - boolean - true if the operating system is supported, false if not.\n🔗EXAMPLE local du = require \u0026quot;lib/dtutils\u0026quot; if du.check_os({\u0026quot;windows\u0026quot;}) then -- run the script else dt.print(\u0026quot;Script \u0026lt;script name\u0026gt; only runs on windows\u0026quot;) return end ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/check_os/","tags":null,"title":"check_os"},{"categories":null,"content":"🔗Name clear_GPS.lua - clear_GPS - clear GPS data from selected image(s)\n🔗Description This shortcut removes the GPS coordinate data from the selected images.\n🔗Usage require this script from your main lua file select an image or images click the shortcut, clear GPS data 🔗Additional Software Required 🔗Limitations 🔗Author Bill Ferguson - wpferguson@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/clear_gps/","tags":null,"title":"clear_GPS"},{"categories":null,"content":"🔗Name delete_long_tags.lua - delete all tags longer than a set length\n🔗Description A simple script that will automatically delete all tags longer than a set length\n🔗Usage require this script from your main lua file set the the maximum length in darktable\u0026rsquo;s preference restart darktable 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/delete_long_tags/","tags":null,"title":"delete_long_tags"},{"categories":null,"content":"🔗NAME engine\n🔗SYNOPSIS get and set the output engine\n🔗USAGE local log = require \u0026quot;lib/dtutils.log\u0026quot; result = log.engine(level, ...) level - table - the log level to get or set the engine for, one of log.debug, log.info, log.warn, log.error log.success, log.always, log.screen, log.critical\n\u0026hellip; - function - the output function, one of dt.print, dt.print_error, dt.print_log, print if not function is included, the current engine is returned for the specified log level\n🔗DESCRIPTION engine returns the output engine for the specified log level if a second argument is not supplied. If a function is supplied as the second argment, then the output engine for the specified log level is set to that.\n🔗RETURN VALUE result - function - the current output engine\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.log/engine/","tags":null,"title":"engine"},{"categories":null,"content":"🔗Name get_lib_manpages.lua - retrieve the included library documentation and output it as man pages\n🔗Description 🔗Usage 🔗Additional Software Required 🔗Limitations 🔗Author 🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/tools/get_lib_manpages/","tags":null,"title":"get_lib_manpages"},{"categories":null,"content":"🔗Name gettextExample.lua - darktable script to show how translations works\n🔗Description To create the .po file run: xgettext -l lua gettextExample.lua\nxgettext 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\u0026rsquo;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\u0026rsquo;t recognize those calls and won\u0026rsquo;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\nTo create a .mo file run: msgfmt -v gettextExample.po -o gettextExample.mo\n🔗Usage require this script from your main lua file (Add \u0026lsquo;require \u0026ldquo;gettextExample\u0026rdquo;\u0026rsquo; to luarc.) copy the script to: .config/darktable/lua/ copy the gettextExample.mo to .config/darktable/lua/de_DE/LC_MESSAGES You need to start darktable with the Lua debug option: darktable -d lua $LANG must set to: de_DE\nThe script run on darktable startup and should output this three lines:\nLUA ERROR Hello World! LUA ERROR Bild LUA ERROR Hallo Welt!\n🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/gettextexample/","tags":null,"title":"gettextExample"},{"categories":null,"content":"🔗NAME is_not_sanitized\n🔗SYNOPSIS Check if a string has been sanitized\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; local result = ds.is_not_sanitized(str) str - string - the string that needs to be made safe\n🔗DESCRIPTION is_not_sanitized checks a string to see if it has been made safe use passing as an argument in a system command.\n🔗RETURN VALUE result - boolean - true if the string is not sanitized otherwise false\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/is_not_sanitized/","tags":null,"title":"is_not_sanitized"},{"categories":null,"content":"🔗NAME launch_default_app\n🔗SYNOPSIS open file in default application\n🔗USAGE local dsys = require \u0026quot;lib/dtutils.file\u0026quot; result = dsys.launch_default_app(path) path - string - a file path\n🔗DESCRIPTION launch_default_app allows opening a file in the application that is assigned as default for that filetype in the users\u0026rsquo;s system\n🔗RETURN VALUE result - number - the return value signalling success or failure.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.system/launch_default_app/","tags":null,"title":"launch_default_app"},{"categories":null,"content":"🔗NAME new_tracepoint\n🔗SYNOPSIS create a function returning a tracepoint\n🔗USAGE local dd = require \u0026quot;lib/dtutils.debug\u0026quot; local result = dd.new_tracepoint(name, ...) name - string - the name of the tracepoint to print out\n\u0026hellip; - arguments - variables to dump the contents of\n🔗DESCRIPTION new_tracepoint returns a tracepoint function with the given name. This is mainly used to debug callbacks.\n🔗RETURN VALUE result - function - a function that returns the result of a tracepoint\n🔗EXAMPLE register_event(event, dd.new_tracepoint(\u0026quot;hit callback\u0026quot;)) will print the following each time the callback is called\n**** hit callback **** \u0026lt;all the callback's parameters dumped\u0026gt; ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.debug/new_tracepoint/","tags":null,"title":"new_tracepoint"},{"categories":null,"content":"Running darktable with Lua debugging enabled provides more information about what is occurring within the scripts.\n🔗Snap Open a terminal and start darktable with the command snap run darktable -d lua. This provides debugging information to give you insight into what is happening.\n🔗Linux Open a terminal and start darktable with the command darktable -d lua. This provides debugging information to give you insight into what is happening.\n🔗MacOS Open a terminal and start darktable with the command /Applications/darktable.app/Contents/MacOS/darktable -d lua. This provides debugging information to give you insight into what is happening.\n🔗Windows Open a command prompt. Start darktable with the command \u0026ldquo;C:\\Program Files\\darktable\\bin\\darktable\u0026rdquo; -d lua \u0026gt; log.txt. This provides debugging information to give you insight into what is happening.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/troubleshooting/","tags":null,"title":"troubleshooting"},{"categories":null,"content":"🔗NAME chop_filetype\n🔗SYNOPSIS remove a filetype from a filename\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.chop_filetype(path) path - string - a filename with or without a path\n🔗DESCRIPTION chop_filetype removes the filetype from the filename.\n🔗RETURN VALUE result - string - the path and filename without the filetype\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/chop_filetype/","tags":null,"title":"chop_filetype"},{"categories":null,"content":"🔗Name CollectHelper.lua - add buttons to help with collections\n🔗Description This plugin adds the button(s) to the \u0026ldquo;Selected Images\u0026rdquo; module:\n Return to Previous Collection Collect on image\u0026rsquo;s Folder Collect on image\u0026rsquo;s Color Label(s) Collect on All (AND) It also adds 3 preferences to the lua options dialog box which allow the user to activate/deactivate the 3 \u0026ldquo;Collect on\u0026rdquo; buttons.\nButton Behavior:\n Return to Previous Collection - Will reset the collect parameters to the previously active settings Collect on image\u0026rsquo;s Folder - Will change the collect parameters to be \u0026ldquo;Folder\u0026rdquo; with a value of the selected image\u0026rsquo;s folder location Collect on image\u0026rsquo;s Color Label(s) - Will change the collect parameter to be \u0026ldquo;Color\u0026rdquo; with a value of the selected images color labels, will apply multiple parameters with AND logic if multiple exist Collect on All (AND) - Will collect on all parameters activated by the preferences dialog, as such this button is redundant if you only have one of the two other options enabled 🔗Usage Install: (see here for more detail: https://github.com/darktable-org/lua-scripts )\n Copy this file in to your \u0026ldquo;lua/contrib\u0026rdquo; folder where all other scripts reside. Require this file in your luarc file, as with any other dt plug-in Select the photo you wish to change you collection based on. In the \u0026ldquo;Selected Images\u0026rdquo; module click on \u0026ldquo;Collect on this Image\u0026rdquo;\n🔗Additional Software Required 🔗Limitations 🔗Author Kevin Ertel\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/collecthelper/","tags":null,"title":"CollectHelper"},{"categories":null,"content":"🔗Name delete_unused_tags.lua - automatically delete all tags that are not attached to any images\n🔗Description A simple script that will automatically delete all tags that are not attached to any images\n🔗Usage require this script from your main lua file restart darktable 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/delete_unused_tags/","tags":null,"title":"delete_unused_tags"},{"categories":null,"content":"🔗Name get_libdoc.lua - retrieve the included library documentation and output it\n🔗Description 🔗Usage 🔗Additional Software Required 🔗Limitations 🔗Author 🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/tools/get_libdoc/","tags":null,"title":"get_libdoc"},{"categories":null,"content":"🔗Name hello_world.lua - a simple lua script\n🔗Description prints \u0026ldquo;hello world when DT starts\n🔗Usage require this file from your main lua config file: 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/hello_world/","tags":null,"title":"hello_world"},{"categories":null,"content":"🔗NAME join\n🔗SYNOPSIS join a table of strings with a specified separator\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; local result = du.join(tabl, pat) tabl - table - a table of strings\npat - string - a separator\n🔗DESCRIPTION join assembles a table of strings into a string with the specified pattern in between each string\n🔗RETURN VALUE result - string - the joined string on success, or an empty string on failure\n🔗EXAMPLE join({a, \u0026quot;long\u0026quot;, \u0026quot;path\u0026quot;, \u0026quot;name\u0026quot;, \u0026quot;to\u0026quot;, a, \u0026quot;file.txt\u0026quot;}, \u0026quot; \u0026quot;) would return the string \u0026ldquo;a long path name to a file.txt\u0026rdquo;\n🔗REFERENCE http://lua-users.org/wiki/SplitJoin\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/join/","tags":null,"title":"join"},{"categories":null,"content":"🔗NAME log_level\n🔗SYNOPSIS get or set the log level\n🔗USAGE local log = require \u0026quot;lib/log\u0026quot; local result = log.log_level(...) \u0026hellip; - arguments - if none is supplied, then the current log level is returned as one of: log.debug, log.info, log.warn, log.error, log.success. If one of log.debug, log.info, log.warn, log.error, or log.success is supplied as the argument then the log level is set to that value. All log levels greater than or equal in value will be enabled. Any levels of lesser value will be disabled.\n🔗DESCRIPTION log_level gets and sets the logging level. When called with no arguments the current log level is returned as one of log.debug, log.info, log.warn, log.error, or log.success. When called with one of log.debug, log.info, log.warn, log.error or log.success then the log level is set. When setting the log level all levels equal or greater are enabled and any of lesser value are disabled. See the example.\n🔗RETURN VALUE result - log level - one of log.debug, log.info, log.warn, log.error or log.success\n🔗EXAMPLE Assume that the current log level is log.error. Calling\nlog.log_level() will return log.error. Calling\nlog.log_level(log.info) will leave log.debug disabled, and enable log.info, log.warn, log.error and log.success. log.info will be returned as the log_level.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.log/log_level/","tags":null,"title":"log_level"},{"categories":null,"content":"🔗NAME sanitize\n🔗SYNOPSIS surround a string in quotes making it safe to pass as an argument\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; local result = ds.sanitize(str) str - string - the string that needs to be made safe\n🔗DESCRIPTION sanitize converts a string into a version suitable for use passing as an argument in a system command.\n🔗RETURN VALUE result - string - a websafe string\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/sanitize/","tags":null,"title":"sanitize"},{"categories":null,"content":"🔗NAME terse_dump\n🔗SYNOPSIS set darktable.debug.known to shorten all image dumps to a single line\n🔗USAGE local dd = require \u0026quot;lib/dtutils.debug\u0026quot; dd.terse_dump() 🔗DESCRIPTION terse_dump sets darktable.debug.known to shorten all images to a single line. If you don\u0026rsquo;t need to debug the content of images, this will avoid them flooding your logs.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.debug/terse_dump/","tags":null,"title":"terse_dump"},{"categories":null,"content":"🔗NAME windows_command\n🔗SYNOPSIS pass a command to the windows operating system for execution and return the result\n🔗USAGE local dsys = require \u0026quot;lib/dtutils.system\u0026quot; local result = dsys.windows_command(command) command - string - a string containing the command and arguments to be passed to the operating system for execution.\n🔗DESCRIPTION The normal method of executing an operating system command is using dt.control.execute(), but that doesn\u0026rsquo;t work with Windows when more than one item in the command is quoted. In order to ensure command execution on Windows we create a batch file in the temporary directory, put the command in it, execute the batch file, then return the result.\n🔗RETURN VALUE result - number - the return value signalling success or failure.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.system/windows_command/","tags":null,"title":"windows_command"},{"categories":null,"content":"🔗Name copy_attach_detach_tags.lua - tools to manipulate image tags\n🔗Description This script that will create four shortcuts and add a module in lighttable mode to copy, paste, replace and remove tags from images.\n🔗Usage set the shortcuts for copy, attach and detach in the preferences dialog \u0026lt;your shortcut1\u0026gt; copy will create a list of tags from all selected images \u0026lt;your shortcut2\u0026gt; paste copied tags to selected images, whereby darktable internal tags starting with \u0026lsquo;darktable|\u0026rsquo; will not be touched \u0026lt;your shortcut3\u0026gt; removes all expect darktable internal tags from selected images \u0026lt;your shortcut4\u0026gt; replaces all tags expect darktable internals A module reset will empty the clipboard 🔗Additional Software Required 🔗Limitations 🔗Author Christian Kanzian\nHolger Klemm\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/copy_attach_detach_tags/","tags":null,"title":"copy_attach_detach_tags"},{"categories":null,"content":"🔗NAME create_unique_filename\n🔗SYNOPSIS create a unique filename from the supplied argument\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.create_unique_filename(filepath) filepath - string - the path and filename requested\n🔗DESCRIPTION create_unique_filename takes a requested filepath and checks to see if it exists. If if doesn\u0026rsquo;t then it\u0026rsquo;s returned intact. If it already exists, then a two digit increment is added to the filename and it is tested again. The increment keeps increasing until either a unique filename is found or there have been 100 attempts.\n🔗RETURN VALUE result - string - the incremented filename\n🔗LIMITATIONS create_unique_filename will only attempt 100 increments.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/create_unique_filename/","tags":null,"title":"create_unique_filename"},{"categories":null,"content":"🔗Name enfuse.lua - merge the selected images into one tonemapped image and import the result\n🔗Description This script uses enfuse to merge the selected images into one tonemapped image and imports the result. It only works on ldr images (like, JPEG).\n🔗Usage require this script from your main lua file it creates a new lighttable module 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/enfuse/","tags":null,"title":"enfuse"},{"categories":null,"content":"🔗Name lighttable_demo.lua - an example script demonstrating how to control lighttable display modes\n🔗Description lighttable_demo is an example script showing how to control lighttable layout, sorting, and filtering from a lua script. If the selected directory has different ratings, color labels, etc, then the sorting and filtering display is a little clearer.\n🔗Usage require this script from your main lua file 🔗Additional Software Required 🔗Limitations 🔗Author Bill Ferguson - wpferguson@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/lighttable_demo/","tags":null,"title":"lighttable_demo"},{"categories":null,"content":"🔗NAME msg\n🔗SYNOPSIS print a log message\n🔗USAGE local log = require \u0026quot;lib/log\u0026quot; log.msg(level, ...) level - table - the type of message, one of:\n log.debug - debugging messages log.info - informational messages log.warn - warning messages log.error - error messages log.success - success messages log.always - an internal message for debugging log.screen - output 1 line of text to the screen log.critical - print a critical message to the console \u0026hellip; - string(s) - the message to print, which could be a comma separated set of strings\n🔗DESCRIPTION msg checks the level to see if it is enabled, then prints the level type and message if it is. Messages are output using the engine configured in each log level.\n🔗LIMITATIONS If you use log.msg in a callback, the name of the calling routine can\u0026rsquo;t be determined. A solution is to include some means of reference such as the name of the callback as an argument, i.e.\nlog.msg(log.debug, \u0026quot;libPlugin.format_combobox:\u0026quot;, \u0026quot;value is \u0026quot; .. self.value) which would result in\nDEBUG: callback: libPlugin.format_combobox: value is JPEG ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.log/msg/","tags":null,"title":"msg"},{"categories":null,"content":"🔗NAME prequire\n🔗SYNOPSIS a protected lua require\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; local status, lib = du.prequire(req_name) req_name - string - the filename of the lua code to load without the \u0026ldquo;.lua\u0026rdquo; filetype\n🔗DESCRIPTION prequire is a protected require that can survive an error in the code being loaded without bringing down the calling routine.\n🔗RETURN VALUE status - boolean - true on success lib - if status is true, then the code, otherwise an error message\n🔗EXAMPLE local status, lib = prequire(\u0026quot;lib/dtutils.file\u0026quot;) which would load lib/dtutils/file.lua which would return a status of true and the reference to the library.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/prequire/","tags":null,"title":"prequire"},{"categories":null,"content":"🔗NAME sanitize_lua\n🔗SYNOPSIS escape lua \u0026lsquo;magic\u0026rsquo; characters from a pattern string\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; local result = ds.sanitize_lua(str) str - string - the string that needs to be made safe\n🔗DESCRIPTION sanitize_lua escapes lua \u0026lsquo;magic\u0026rsquo; characters so that a string may be used in lua string/patten matching.\n🔗RETURN VALUE result - string - a lua pattern safe string\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/sanitize_lua/","tags":null,"title":"sanitize_lua"},{"categories":null,"content":"🔗Name script_manager.lua - a tool for managing the darktable lua scripts\n🔗Description script_manager is designed to run as a standalone script so that it may be used as a drop in luarc file in the user\u0026rsquo;s $HOME/.config/darktable ($HOME/AppData/Local/darktable on windows) directory. It may also be required from a luarc file.\nOn startup script_manager checks to see if there is an existing scripts directory.\nIf there is an existing lua scripts directory then it is read to see what scripts are present.\nScripts are sorted by \u0026ldquo;category\u0026rdquo; based on what subdirectory they are found in, thus with a lua scripts directory that matched the current repository the categories would be contrib, examples, offical, and tools. Each script has an Enable/Disable button to enable or disable the script.\nA link is created to the user\u0026rsquo;s Downloads directory on linux, unix and MacOS. Windows users must create the link manually using mklink.exe. Additional \u0026ldquo;un-official\u0026rdquo; scripts may be downloaded from other sources and placed in the users Downloads directory. These scripts all fall in a downloads category.\nThey also each have an Enable/Disable button.\n🔗Usage 🔗Additional Software Required 🔗Limitations 🔗Author 🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/tools/script_manager/","tags":null,"title":"script_manager"},{"categories":null,"content":"🔗NAME tracepoint\n🔗SYNOPSIS print out a tracepoint and dump the arguments\n🔗USAGE local dd = require \u0026quot;lib/dtutils.debug\u0026quot; local result = dd.tracepoint(name, ...) name - string - the name of the tracepoint to print out\n\u0026hellip; - arguments - variables to dump the contents of\n🔗DESCRIPTION tracepoint prints its name and dumps its parameters using darktable.debug.\n🔗RETURN VALUE result - \u0026hellip; - the supplied argument list\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.debug/tracepoint/","tags":null,"title":"tracepoint"},{"categories":null,"content":"🔗Name cr2hdr.lua - Magic Lantern Dual ISO processing\n🔗Description cr2hdr Magic Lantern Dual ISO processing.\nThis script automates the steps involved to process an image created with the Magic Lantern Dual ISO module. Upon invoking the script with a shortcut \u0026ldquo;cr2hdr\u0026rdquo; 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.\n🔗Usage require this script from your main lua file trigger conversion on selected/hovered images by shortcut (set shortcut in settings dialog) it is also possible to have the script run after importing a collection (optin, since it is not that fast) 🔗Additional Software Required cr2hdr (sources can be obtained through the Magic Lantern repository) 🔗Limitations 🔗Author Till Theato - theato@ttill.de\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/cr2hdr/","tags":null,"title":"cr2hdr"},{"categories":null,"content":"🔗NAME executable_path_widget\n🔗SYNOPSIS create a widget to get executable path preferences\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local widget = df.executable_path_widget(executables) executables - table - a table of strings that are executable names\n🔗DESCRIPTION executable_path_widget takes a table of executable names and builds a set of file selector widgets to get the path to the executable. The resulting widgets are wrapped in a box widget and returned.\n🔗RETURN VALUE widget - widget - a widget containing a file selector widget for each executable.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/executable_path_widget/","tags":null,"title":"executable_path_widget"},{"categories":null,"content":"🔗Name generate_image_txt.lua - generate text metadata\n🔗Description A script to run a command on images to generate text metadata\nThe medata will be displayed as an overlay on the image in lighttable mode\n🔗Usage require this script from your main lua file set a command to run on all image, this command should output text on stdout enable image file generation 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/generate_image_txt/","tags":null,"title":"generate_image_txt"},{"categories":null,"content":"🔗Name moduleExample.lua - create a new example lighttable module\n🔗Description More informations about building user interface elements: https://www.darktable.org/usermanual/ch09.html.php#lua_gui_example And about new_widget here: https://www.darktable.org/lua-api/index.html.php#darktable_new_widget\n🔗Usage require this script from your luarc file To do this add this line to the file .config/darktable/luarc: require \u0026ldquo;examples/moduleExample\u0026rdquo;\n it creates a new example lighttable module\n 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/moduleexample/","tags":null,"title":"moduleExample"},{"categories":null,"content":"🔗NAME spairs\n🔗SYNOPSIS an iterator that provides sorted pairs from a table\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; for key, value in du.spairs(t, order) do -- do something end t - table - table of key, value pairs order - function - an optional function to sort the pairs, if none is supplied, table.sort() is used\n🔗DESCRIPTION spairs is an iterator that returns key, value pairs from a table in sorted order. The sorting order is the result of table.sort() if no function is supplied, otherwise sorting is done as specified in the function.\n🔗EXAMPLE HighScore = { Robin = 8, Jon = 10, Max = 11 } -- basic usage, just sort by the keys for k,v in spairs(HighScore) do print(k,v) end --\u0026gt; Jon 10 --\u0026gt; Max 11 --\u0026gt; Robin 8 -- this uses an custom sorting function ordering by score descending for k,v in spairs(HighScore, function(t,a,b) return t[b] \u0026lt; t[a] end) do print(k,v) end --\u0026gt; Max 11 --\u0026gt; Jon 10 --\u0026gt; Robin 8 🔗REFERENCE Code copied from http://stackoverflow.com/questions/15706270/sort-a-table-in-lua\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/spairs/","tags":null,"title":"spairs"},{"categories":null,"content":"🔗NAME strip_accents\n🔗SYNOPSIS strip accents from characters\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; local result = ds.strip_accents(str) str - string - the string with characters that need accents removed\n🔗DESCRIPTION strip_accents removes accents from accented characters returning the unaccented character.\n🔗RETURN VALUE result - string - the string containing unaccented characters\n🔗REFERENCE Copied from https://forums.coronalabs.com/topic/43048-remove-special-characters-from-string/\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/strip_accents/","tags":null,"title":"strip_accents"},{"categories":null,"content":"🔗Name enfuseAdvanced.lua - process HDR or focus stacked images\n🔗Description This plugin will add the new export module \u0026lsquo;fusion to DRI or DFF image\u0026rsquo;.\n🔗Usage Install:\n Get the Lua scripts: https://github.com/darktable-org/lua-scripts#download-and-install Require this file in your luarc file, as with any other dt plug-in: require \u0026ldquo;contrib/enfuseAdvanced\u0026rdquo; Then select \u0026ldquo;DRI or DFF image\u0026rdquo; as storage option On the initial startup set your executable paths DRI = Dynamic Range Increase (Blend multiple bracket images into a single LDR file) DFF = Depth From Focus (\u0026lsquo;Focus Stacking\u0026rsquo; - Blend multiple images with different focus into a single image) Select multiple images that are either bracketed, or focus-shifted, set your desired operating parameters, and press the export button. A new image will be created. The image will be auto imported into darktable if you have that option enabled. Additional tags or style can be applied on auto import as well, if you desire.\nimage align options: See align_image_stack documentation for further explanation of how it specifically works and the options provided (http://hugin.sourceforge.net/docs/manual/Align_image_stack.html)\nimage fustion options: See enfuse documentation for further explanation of how it specifically works and the options provided (https://wiki.panotools.org/Enfuse) If you have a specific set of parameters you frequently like to use, you can save them to a preset. There are 3 presets available for DRI, and 3 for DFF.\ntarget file: Select your file destination path, or check the \u0026lsquo;save to source image location\u0026rsquo; option. \u0026lsquo;Create Unique Filename\u0026rsquo; is enabled by default at startup, the user can choose to overwrite existing Set any tags or style you desire to be added to the new image (only available if the auto-import option is enabled). You can also change the defaults for this under settings \u0026gt; lua options\nformat options: Same as other export modules\nglobal options: Same as other export modules\n🔗Additional Software Required align_image_stack enfuse ver. 4.2 or greater exiftool\n🔗Limitations 🔗Author Kevin Ertel\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/enfuseadvanced/","tags":null,"title":"enfuseAdvanced"},{"categories":null,"content":"🔗NAME file_copy\n🔗SYNOPSIS copy a file to another name/location\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.file_copy(fromFile, toFile) fromFile - string - name of file to copy from\ntoFile - string - name of file to copy to\n🔗DESCRIPTION copy a file using a succession of methods from operating system to a pure lua solution\n🔗RETURN VALUE result - boolean - nil on error, true on success\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/file_copy/","tags":null,"title":"file_copy"},{"categories":null,"content":"🔗Name image_path_in_ui.lua - Add a widget with the path of the selected images\n🔗Description Add a widget with the path of the selected images for easy copy/past Simple shortcuts to have multiple selection bufers\nThis plugin will add a widget at the bottom of the left column in lighttable mode\n🔗Usage require this file from your main lua config file: 🔗Additional Software Required 🔗Limitations 🔗Author Jérémy Rosen\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/image_path_in_ui/","tags":null,"title":"image_path_in_ui"},{"categories":null,"content":"🔗Name multi_os.lua - an example script that runs on linux, MacOS, and Windows.\n🔗Description multi_os is an example of how to write a script that will run on different operating systems. It uses the lua-scripts libraries to lessen the amount of code that needs to be written, as well as gaining access to tested cross-platform routines. This script also performs a function that some may find useful. It creates a button in the lighttable selected images module that extracts the embedded jpeg image from a raw file, then imports it and groups it with the raw file. A keyboard shortcut is also created. A key combination can be assigned to the shortcut in the lua preferences and then the action can be invoked by hovering over the image and pressing the key combination.\n🔗Usage require this script from your main lua file start darktable, open prefreences, go to lua options and update the executable location if you are running Windows or MacOS, then restart darktable. select an image or images click the button to extract the jpeg 🔗Additional Software Required ufraw-batch - https://ufraw.sourceforge.net MacOS - install with homebrew 🔗Limitations 🔗Author Bill Ferguson - wpferguson@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/multi_os/","tags":null,"title":"name"},{"categories":null,"content":"🔗NAME split\n🔗SYNOPSIS split a string on a specified separator\n🔗USAGE local du = require \u0026quot;lib/dtutils\u0026quot; local result = du.split(str, pat) str - string - the string to split\npat - string - the pattern to split on\n🔗DESCRIPTION split separates a string into a table of strings. The strings are separated at each occurrence of the supplied pattern. The pattern may be any pattern as described in the lua docs. Each match of the pattern is consumed and not returned.\n🔗RETURN VALUE result - table - a table of strings on success, or an empty table on error\n🔗EXAMPLE split(\u0026quot;/a/long/path/name/to/a/file.txt\u0026quot;, \u0026quot;/\u0026quot;) would return a table like\n{\u0026quot;a\u0026quot;, \u0026quot;long\u0026quot;, \u0026quot;path\u0026quot;, \u0026quot;name\u0026quot;, \u0026quot;to\u0026quot;, \u0026quot;a\u0026quot;, \u0026quot;file.txt\u0026quot;} 🔗REFERENCE http://lua-users.org/wiki/SplitJoin\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils/split/","tags":null,"title":"split"},{"categories":null,"content":"🔗NAME urlencode\n🔗SYNOPSIS encode a string in a websage manner\n🔗USAGE local ds = require \u0026quot;lib/dtutils.string\u0026quot; local result = ds.urlencode(str) str - string - the string that needs to be made websafe\n🔗DESCRIPTION urlencode converts a string into a websafe version suitable for use in a web browser.\n🔗RETURN VALUE result - string - a websafe string\n🔗REFERENCE https://forums.coronalabs.com/topic/43048-remove-special-characters-from-string\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.string/urlencode/","tags":null,"title":"urlencode"},{"categories":null,"content":"🔗Name 🔗Description Given a haldCLUT identity file this script generates haldCLUTS from all the user\u0026rsquo;s styles and exports them to a location of their choosing.\n🔗Usage Add the following line to .config/darktable/luarc to enable this lightable module: require \u0026ldquo;contrib/exportLut\u0026rdquo;\n🔗Additional Software Required 🔗Limitations Warning: during export if a naming collision occurs the older file is automatically overwritten silently.\n🔗Author Noah Clarke\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/exportlut/","tags":null,"title":"exportLUT"},{"categories":null,"content":"🔗NAME file_move\n🔗SYNOPSIS move a file from one directory to another\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.file_move(fromFile, toFile) fromFile - string - name of the original file\ntoFile - string - the new file location and name\n🔗DESCRIPTION Move a file from one place to another. Try a succession of methods from builtin to operating system to a pure lua solution.\n🔗RETURN VALUE result - boolean - nil on error, some value on success\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/file_move/","tags":null,"title":"file_move"},{"categories":null,"content":"🔗Name import_filter_manager.lua - add a dropdown list with import filters to the import dialog\n🔗Description 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.\n🔗Usage require this script from your main lua file also require some files with import filters, for example import_filters.lua. it is important to add them AFTER this one! 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/import_filter_manager/","tags":null,"title":"import_filter_manager"},{"categories":null,"content":"🔗Name panels_demo.lua - an example script demonstrating how to contol panel visibility\n🔗Description panels_demo is an example script showing how to control panel visibility. It cycles through the panels hiding them one by one, then showing them one by one, then hiding all, then showing all. Finally, the original panel visibility is restored.\n🔗Usage require this script from your main lua file 🔗Additional Software Required 🔗Limitations 🔗Author 🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/panels_demo/","tags":null,"title":"panels_demo"},{"categories":null,"content":"🔗Name ext_editor.lua - edit images with external editors\n🔗Description This script provides helpers to edit image files with programs external to darktable. It adds:\n a new target storage \u0026ldquo;collection\u0026rdquo;. Image exported will be reimported to collection for further edit with external programs a new lighttable module \u0026ldquo;external editors\u0026rdquo;, to select a program from a list of up to 9 external editors and run it on a selected image (adjust this limit by changing MAX_EDITORS) a set of lua preferences in order to configure name and path of up to 9 external editors a set of lua shortcuts in order to quick launch the external editors 🔗Usage require this script from main lua file \u0026ndash; setup \u0026ndash;\n in \u0026ldquo;preferences/lua options\u0026rdquo; configure name and path/command of external programs note that if a program name is left empty, that and all following entries will be ignored in \u0026ldquo;preferences/shortcuts/lua\u0026rdquo; configure shortcuts for external programs (optional) whenever programs preferences are changed, in lighttable/external editors, press \u0026ldquo;update list\u0026rdquo; \u0026ndash; use \u0026ndash;\n in the export dialog choose \u0026ldquo;collection\u0026rdquo; and select the format and bit depth for the exported image\n press \u0026ldquo;export\u0026rdquo;\n the exported image will be imported into collection and grouped with the original image\n select an image for editing with en external program, and:\n in lighttable/external editors, select program and press \u0026ldquo;edit\u0026rdquo;\n edit the image with the external editor, overwite the file, quit the external program\n the selected image will be updated or\n in lighttable/external editors, select program and press \u0026ldquo;edit a copy\u0026rdquo;\n edit the image with the external editor, overwite the file, quit the external program\n a copy of the selected image will be created and updated or\n in lighttable select target storage \u0026ldquo;collection\u0026rdquo;\n enter in darkroom\n to create an export or a copy press CRTL+E\n use the shortcut to edit the current image with the corresponding external editor\n overwite the file, quit the external program\n the darkroom view will be updated\n warning: mouseover on lighttable/filmstrip will prevail on current image\n this is the default DT behavior, not a bug of this script\n 🔗Additional Software Required 🔗Limitations MAC compatibility not tested 🔗Author Marco Carrarini - marco.carrarini@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/ext_editor/","tags":null,"title":"ext_editor"},{"categories":null,"content":"🔗NAME filename_increment\n🔗SYNOPSIS add a two digit increment to a filename\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.filename_increment(filepath) filepath - string - filename to increment\n🔗DESCRIPTION filename_increment solves the problem of filename conflict by adding an increment to the filename. If the supplied filename has no increment then \u0026ldquo;01\u0026rdquo; is added to the basename. If the filename already has an increment, then 1 is added to it and the filename returned.\n🔗RETURN VALUE result - string - the incremented filename\n🔗LIMITATIONS The filename will be incremented to a maximum of 99.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/filename_increment/","tags":null,"title":"filename_increment"},{"categories":null,"content":"🔗Name import_filters.lua - add filters for import_filter_manager\n🔗Description This script goes along with the import filter manager. It adds two filters:\n 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. 🔗Usage require this script from your main lua file AFTER import_filter_manager.lua 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Ellinghaus \u0026amp; Christian Mandel\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/import_filters/","tags":null,"title":"import_filters"},{"categories":null,"content":"🔗Name preferenceExample.lua - show the different preference types that are possible with Lua\n🔗Description darktable script to show the different preference types that are possible with Lua\n🔗Usage require this script from your main lua file 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/preferenceexamples/","tags":null,"title":"preferenceExample"},{"categories":null,"content":"🔗Name face_recognition.lua - add a new storage option and calls face_recognition after export\n🔗Description Add a new storage option to send images to face_recognition. Images are exported to darktable tmp dir first. A directory with known faces must exist, the image name are the tag names which will be used. Multiple images for one face can exist, add a number to it, the number will be removed from the tag, for example: People|IknowYou1.jpg People|IknowYou2.jpg People|Another.jpg People|Youtoo.jpg\n🔗Usage require this file from your main luarc config file. 🔗Additional Software Required https://github.com/ageitgey/face_recognition https://github.com/darktable-org/lua-scripts/tree/master/lib 🔗Limitations 🔗Author Sebastian Witt\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/face_recognition/","tags":null,"title":"face_recognition"},{"categories":null,"content":"🔗NAME get_basename\n🔗SYNOPSIS get the filename without the path or extension\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.get_basename(filepath) filepath - string - path and filename\n🔗DESCRIPTION get_basename returns the name of the file without the path or filetype.\n🔗RETURN VALUE result - string - the basename of the file\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/get_basename/","tags":null,"title":"get_basename"},{"categories":null,"content":"🔗Name printExamples.lua - prints \u0026ldquo;hello world\u0026rdquo; when darktable starts\n🔗Description prints \u0026ldquo;hello world\u0026rdquo; to the screen when darktable starts\n🔗Usage require this file from your main lua config file: 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/printexamples/","tags":null,"title":"printExamples"},{"categories":null,"content":"🔗Name save_selection.lua - simple shortcuts to have multiple selection buffers\n🔗Description Simple shortcuts to have multiple selection buffers\n🔗Usage require this file from your main lua config file: go to configuration =\u0026gt; preferences =\u0026gt; lua set the shortcuts you want to use This plugin will provide shortcuts to save to and restore from up to five temporary buffers\nThis plugin also provides a shortcut to swap the current selection with a quick-swap buffer\nThe variable \u0026ldquo;buffer_count\u0026rdquo; controls the number of selection buffers, increase it if you need more temporary selection buffers\n🔗Additional Software Required 🔗Limitations 🔗Author Jérémy Rosen\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/save_selection/","tags":null,"title":"save_selection"},{"categories":null,"content":"🔗Name fujifilm_ratings.lua - support for importing Fujifilm in-camera ratings in darktable\n🔗Description Support for importing Fujifilm in-camera ratings in darktable.\n🔗Usage 🔗Additional Software Required exiftool (https://www.sno.phy.queensu.ca/~phil/exiftool/) 🔗Limitations 🔗Author Ben Mendis - ben.mendis@gmail.com\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/fujifilm_ratings/","tags":null,"title":"fujifilm_ratings"},{"categories":null,"content":"🔗NAME get_executable_path_preference\n🔗SYNOPSIS return the path to an executable from a preference\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.get_executable_path_preference(executable) executable - string - the name of the executable to get the path for\n🔗DESCRIPTION get_executable_path_preference returns the path preference to the requested executable.\n🔗RETURN VALUE result - string - path to the executable\n🔗LIMITATIONS executable should be the basename of the executable without extensions\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/get_executable_path_preference/","tags":null,"title":"get_executable_path_preference"},{"categories":null,"content":"🔗Name running_os.lua - prints the operating system\n🔗Description prints the operating system\n🔗Usage require this script from your main lua file To do this add this line to the file .config/darktable/luarc: require \u0026ldquo;running_os\u0026rdquo; 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/examples/running_os/","tags":null,"title":"running_os"},{"categories":null,"content":"🔗Name selection_to_pdf.lua - generate a PDF file (via Latex) containing all selected images\n🔗Description Generates a PDF file (via Latex) containing all selected images\nThis plugin will add a new exporter that will allow you to generate the pdf file\nPlugin allows you to choose how many thumbnails you need per row\n🔗Usage require this file from your main lua config file: 🔗Additional Software Required a PDF-Viewer pdflatex (Latex) 🔗Limitations 🔗Author Jérémy Rosen \u0026amp; Pascal Obry\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/official/selection_to_pdf/","tags":null,"title":"selection_to_pdf"},{"categories":null,"content":"🔗Name geoJSON_export.lua - export a geoJSON file from selected images\n🔗Description darktable geoJSON export script\n🔗Usage require this script from your main Lua file 🔗Additional Software Required mkdir convert (ImageMagick) xdg-open xdg-user-dir 🔗Limitations This script is only tested with Linux\n🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/geojson_export/","tags":null,"title":"geoJSON_export"},{"categories":null,"content":"🔗NAME get_filename\n🔗SYNOPSIS get the filename and extension from a file path\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.get_filename(filepath) filepath - string - path and filename\n🔗DESCRIPTION get_filename strips the path from a filepath and returns the filename\n🔗RETURN VALUE result - string - the file name and type\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/get_filename/","tags":null,"title":"get_filename"},{"categories":null,"content":"🔗Name geoToolbox.lua - a module of geo tools\n🔗Description it creates a new geoToolbox lighttable module 🔗Usage require this script from your main lua file To do this add this line to the file .config/darktable/luarc: require \u0026ldquo;geoToolbox\u0026rdquo; 🔗Additional Software Required 🔗Limitations 🔗Author Tobias Jakobs\n🔗Change Log ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/geotoolbox/","tags":null,"title":"geoToolbox"},{"categories":null,"content":"🔗NAME get_filetype\n🔗SYNOPSIS get the filetype from a filename\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.get_filetype(filepath) filepath - string - path and filename\n🔗DESCRIPTION get_filetype returns the filetype from the supplied filepath\n🔗RETURN VALUE result - string - the filetype\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/get_filetype/","tags":null,"title":"get_filetype"},{"categories":null,"content":"🔗NAME get_path\n🔗SYNOPSIS get the path from a file path\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.get_path(filepath) filepath - string - path and filename\n🔗DESCRIPTION get_path strips the filename and filetype from a path and returns the path\n🔗RETURN VALUE result - string - the path\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/get_path/","tags":null,"title":"get_path"},{"categories":null,"content":"🔗Name gimp.lua - export and edit with GIMP\n🔗Description 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.\n🔗Usage require this script from your main lua file select an image or images for editing with GIMP in the export dialog select \u0026ldquo;Edit with GIMP\u0026rdquo; and select the format and bit depth for the exported image Press \u0026ldquo;export\u0026rdquo; Edit the image with GIMP then save the changes with File-\u0026gt;Overwrite\u0026hellip;. Exit GIMP The edited image will be imported and grouped with the original image 🔗Additional Software Required GIMP - http://www.gimp.org 🔗Limitations Developed and tested on Ubuntu 14.04 LTS with darktable 2.0.3 and GIMP 2.9.3 (development version with 8 bit color)\n There is no provision for dealing with the xcf files generated by GIMP, since darktable doesn\u0026rsquo;t deal with them. You may want to save the xcf file if you intend on doing further edits to the image or need to save the layers used. Where you save them is up to you. 🔗Author Bill Ferguson - wpferguson@gmail.com\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/gimp/","tags":null,"title":"gimp"},{"categories":null,"content":"🔗Name gpx_export.lua - gpx exporter\n🔗Description Simple darktable GPX generator script\nThis script generates a GPX track from all images having GPS latitude and longitude information. For each source folder, a separate \u0026lt;trk\u0026gt; is generated in the gpx file.\n🔗Usage 🔗Additional Software Required 🔗Limitations 🔗Author Jannis_V\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/gpx_export/","tags":null,"title":"gpx_export"},{"categories":null,"content":"🔗NAME mkdir\n🔗SYNOPSIS create the directory(ies) if they do not already exist\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; df.mkdir(path) path - string - a directory path\n🔗DESCRIPTION mkdir creates directories if they do not already exist. It creates parent directories if needed.\n🔗RETURN VALUE path - string - a directory path\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/mkdir/","tags":null,"title":"mkdir"},{"categories":null,"content":"🔗Name HDRMerge.lua - create an HDR image using HDRMerge\n🔗Description This plugin adds the module \u0026lsquo;HDRMerge\u0026rsquo; to darktable\u0026rsquo;s lighttable view\n🔗Usage Install: (see here for more detail: https://github.com/darktable-org/lua-scripts )\n Copy this file in to your \u0026lsquo;lua/contrib\u0026rsquo; folder where all other scripts reside. Require this file in your luarc file, as with any other dt plug-in On the initial startup go to darktable settings \u0026gt; lua options and set your executable paths and other preferences, then restart darktable Select bracketed images and press the Run HDRMerge button. The resulting DNG will be auto-imported into darktable. Additional tags or style can be applied on auto import as well, if you desire.\nBase Options: Select your desired BPS (bits per sample and Embedded Preview Size.\nBatch Options: Select if you want to run in batch mode or not Select the gap, in seconds, between images for auto grouping in batch mode\nSee HDRMerge manual for further detail: http://jcelaya.github.io/hdrmerge/documentation/2014/07/11/user-manual.html\nAuto-import Options: Select a style, whether you want tags to be copied from the original, and any additional tags you desire added when the new image is auto-imported\n🔗Additional Software Required HDRMerge ver. 4.5 or greater\n🔗Limitations 🔗Author Kevin Ertel\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/hdrmerge/","tags":null,"title":"HDRMerge"},{"categories":null,"content":"🔗NAME rmdir\n🔗SYNOPSIS recursively remove a directory\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; df.rmdir(path) path - string - a directory path\n🔗DESCRIPTION rmdir allows directories to be removed recursively.\n🔗RETURN VALUE path - string - a directory path\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/rmdir/","tags":null,"title":"rmdir"},{"categories":null,"content":"🔗Name hugin.lua - stitch multiple images into a panorama\n🔗Description Add a new storage option to send images to hugin. Images are exported to darktable tmp dir first.\n🔗Usage require this file from your main luarc config file set the hugin tool paths (on some platforms) if hugin gui mode is used, save the final result in the tmp directory with the first file name and _pano as suffix for the image to be automatically imported to DT afterwards 🔗Additional Software Required hugin 🔗Limitations 🔗Author Wolfgang Goetz\nChristian Kanzian\nTobias Jakobs\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/hugin/","tags":null,"title":"hugin"},{"categories":null,"content":"🔗NAME sanitize_filename\n🔗SYNOPSIS make a filename safe to pass as an argument\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local sanitized_filename = df.sanitize_filename(filename) filename - string - a filepath and filename\n🔗DESCRIPTION sanitize_filename places quotes around the filename in an operating system specific manner. The result is safe to pass as an argument to the operating system.\n🔗RETURN VALUE sanitized_filename - string - quoted filename\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/sanitize_filename/","tags":null,"title":"sanitize_filename"},{"categories":null,"content":"🔗Name image_stack.lua - process a stack of images\n🔗Description This script provides another storage (export target) for darktable. Selected images are exported in the specified format to temporary storage. The images are aligned if the user requests it. When the images are ready, imagemagick is launched and uses the selected evaluate-sequence operator to process the images. The output file is written to a filename representing the imput files in the format specified by the user. The resulting image is imported into the film roll. The source images can be tagged as part of the file creation so that a user can later find the contributing images.\n🔗Usage require this script from your main lua file select the images to process with image_stack in the export dialog select \u0026ldquo;image stack\u0026rdquo; and select the format and bit depth for the exported image Select whether the images need to be aligned. Select the stack operator Select the output format Select whether to tag the source images used to create the resulting file Specify executable locations if necessary Press \u0026ldquo;export\u0026rdquo; The resulting image will be imported 🔗Additional Software Required align_image_stack - http://www.hugin.org imagemagick - http://www.imagemagick.org 🔗Limitations Mean is a fairly quick operation. On my machine (i7-6800K, 16G) it takes a few seconds. Median, on the other hand takes approximately 10x longer to complete. Processing 10 and 12 image stacks took over a minute. I didn\u0026rsquo;t test all the other functions, but the ones I did fell between Mean and Median performance wise.\n🔗Author Bill Ferguson - wpferguson@gmail.com\n🔗See Also Thanks to Pat David and his blog entry on blending images, https://patdavid.net/2013/05/noise-removal-in-photos-with-median_6.html ","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/image_stack/","tags":null,"title":"image_stack"},{"categories":null,"content":"🔗NAME set_executable_path_preference\n🔗SYNOPSIS set a preference for the path to an executable\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; df.set_executable_path_preference(executable, path) executable - string - the name of the executable to set the path for\npath - string - the path to the binary\n🔗DESCRIPTION set_executable_path_preference takes an executable name and path to the executable and registers the preference for later use.\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/set_executable_path_preference/","tags":null,"title":"set_executable_path_preference"},{"categories":null,"content":"🔗Name image_time.lua - synchronize image time for images shot with different cameras\n🔗Description image_time non destructively adjusts image times by modifying the database image exif_datetime_taken field. There are 4 modes: adjust time, set time, synchronize time, and reset time.\nADJUST TIME\nadjust time mode lets you chose an offset in terms of years, months, days, hours, minutes, and seconds. The adjustment can be added or subtracted. WARNING: When adding and subtracting months the result will usually be what is expected unless the time being adjusted is at the end of the month. This is because a month is a variable amount of time that can be 28, 29, 30 or 31 days depending on the month. Example: It's March 31st and I subtract a month which not sets the time to February 31st. When that gets set to a valid time, then the date changes to March 3rd. SET TIME\nset time mode allows you to pick a date and time and set the image time accordingly. Fields may be left out. This is useful when importing scanned images that don't have an embedded date. SYNCHRONIZE TIME\nI recently purchased a 7DmkII to replace my aging 7D. My 7D was still serviceable, so I bought a remote control and figured I'd try shooting events from 2 different perspectives. I didn't think to synchonize the time between the 2 cameras, so when I loaded the images and sorted by time it was a disaster. I hacked a script together with hard coded values to adjust the exif_datetime_taken value in the database for the 7D images so that everything sorted properly. I've tried shooting with 2 cameras several times since that first attempt. I've gotten better at getting the camera times close, but still haven't managed to get them to sync. So I decided to think the problem through and write a proper script to take care of the problem. RESET TIME\nSelect the images and click reset. 🔗Usage ADJUST TIME\nChange the year, month, day, hour, minute, second dropdowns to the amount of change desired. Select add or subtract. Select the images. Click adjust. SET TIME\nSet the time fields to the desired time. Select the images to change. Click set. SYNCHRONIZE TIME\nSelect 2 images, one from each camera, of the same moment in time. Click the Calculate button to calculate the time difference. The difference is displayed in the difference entry. You can manually adjust it by changing the value if necessary. Select the images that need their time adjusted. Determine which way to adjust adjust the time (add or subtract) and select the appropriate choice. If the image times get messed up and you just want to start over, select reset time from the mode and reset the image times. RESET TIME\nSelect the images and click reset. 🔗Additional Software Required exiv2 🔗Limitations 🔗Author Bill Ferguson - wpferguson@gmail.com\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/image_time/","tags":null,"title":"image_time"},{"categories":null,"content":"🔗NAME split_filepath\n🔗SYNOPSIS split a filepath into parts\n🔗USAGE local df = require \u0026quot;lib/dtutils.file\u0026quot; local result = df.split_filepath(filepath) filepath - string - path and filename\n🔗DESCRIPTION split_filepath splits a filepath into the path, filename, basename and filetype and puts that in a table\n🔗RETURN VALUE result - table - a table containing the path, filename, basename, and filetype\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.api.manual/dtutils.file/split_filepath/","tags":null,"title":"split_filepath"},{"categories":null,"content":"🔗Name kml_export.lua - export a kml file from selected images\n🔗Description darktable KML export script\n🔗Usage require this script from your main Lua file when choosing file format, pick JPEG or PNG as Google Earth doesn\u0026rsquo;t support other formats 🔗Additional Software Required zip (at the moment Linux only and only if you create KMZ files) magick (ImageMagick) xdg-user-dir (Linux) 🔗Limitations This script is only tested with Linux\n🔗Author Tobias Jakobs\nErik Augustin\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/kml_export/","tags":null,"title":"kml_export"},{"categories":null,"content":"🔗Name LabelsToTags.lua - mass apply tags to images\n🔗Description Allows the mass-application of tags using color labels and ratings as a guide.\n🔗Usage In your \u0026lsquo;luarc\u0026rsquo; file or elsewhere, use the function \u0026lsquo;register_tag_mapping\u0026rsquo;, defined in this module, to specify one or more tag mappings for use by the module. Any mappings so registered will be selectable, according to their given names, in the module\u0026rsquo;s \u0026ldquo;mapping\u0026rdquo; combo box.\nA mapping takes the form of a table mapping patterns to lists of tags. A pattern consists of 6 characters, of which the first five represent color labels and the last the rating. Each color label character may be \u0026lsquo;+\u0026rsquo;, \u0026lsquo;-\u0026rsquo;, or \u0026lsquo;\u0026rsquo;, indicating that for this pattern to match, the corresponding color label, respectively, must be on, must be off, or can be either. Similarly, the rating character may be a numeral between 0 and 5, \u0026ldquo;R\u0026rdquo; for rejected, or \u0026ldquo;\u0026rdquo; for \u0026ldquo;any value.\u0026rdquo;\nAn example call to \u0026lsquo;register_tag_mapping\u0026rsquo; is provided in a comment at the end of this file.\nWhen the \u0026ldquo;Start\u0026rdquo; button is pressed, the module will iterate over each selected image and check the state of that image\u0026rsquo;s color labels and rating against each pattern defined in the selected mapping. For each pattern that matches, the corresponding tags will be added to the image. Any such tag not already existing in the database will be created.\n🔗Additional Software Required 🔗Limitations 🔗Author August Schwerdfeger - august@schwerdfeger.name\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/labelstotags/","tags":null,"title":"LabelsToTags"},{"categories":null,"content":"🔗Name OpenInExplorer.lua - open an images containing folder\n🔗Description This plugin adds the module \u0026ldquo;OpenInExplorer\u0026rdquo; to darktable\u0026rsquo;s lighttable view.\n🔗Usage Require this file in your luarc file, as with any other dt plug-in\nSelect the photo(s) you wish to find in your operating system\u0026rsquo;s file manager and press \u0026ldquo;show in file explorer\u0026rdquo; in the \u0026ldquo;selected images\u0026rdquo; section.\n Nautilus (Linux), Explorer (Windows), and Finder (macOS prior to Mojave) will open one window for each selected image at the file\u0026rsquo;s location. The file name will be highlighted.\n On macOS Mojave and Catalina the Finder will open one window for each different directory. In these windows only the last one of the corresponding files will be highlighted (bug or feature?).\n Dolphin (Linux) will open one window with tabs for the different directories. All the selected images' file names are highlighted in their respective directories.\n As an alternative option you can choose to show the image file names as symbolic links in an arbitrary directory. Go to preferences|Lua options. This option is not available for Windows users as on Windows solely admins are allowed to create links.\n Pros: You do not clutter up your display with multiple windows. So there is no need to limit the number of selections.\n Cons: If you want to work with the files you are one step behind the original data.\n 🔗Additional Software Required 🔗Limitations 🔗Author Kevin Ertel\nVolker Lenhardt\nBill Ferguson\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/openinexplorer/","tags":null,"title":"OpenInExplorer"},{"categories":null,"content":"🔗Name 🔗Description guides for cropping passport photos based on documents from the Finnish police (https://www.poliisi.fi/instancedata/prime_product_julkaisu/intermin/embeds/poliisiwwwstructure/38462_Passikuvaohje_EN.pdf) describing passport photo dimensions of 47x36 mm and 500x653 px for digital biometric data stored in passports. They use ISO 19794-5 standard based on ICAO 9303 regulations which should also be compliant for all of Europe.\n🔗Usage add the following line in the file $CONFIGDIR/luarc require \u0026ldquo;passport_guide\u0026rdquo; (optional) add the line: \u0026ldquo;plugins/darkroom/clipping/extra_aspect_ratios/passport 36x47mm=47:36\u0026rdquo; to $CONFIGDIR/darktablerc when using the cropping tool, select \u0026ldquo;passport\u0026rdquo; as guide and if you added the line in yout rc select \u0026ldquo;passport 36x47mm\u0026rdquo; as aspect 🔗Additional Software Required 🔗Limitations 🔗Author Kåre Hampf\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/passport_guide/","tags":null,"title":"passport_guide"},{"categories":null,"content":"🔗Name pdf_slideshow.lua - generate a pdf slideshow\n🔗Description Generates a PDF slideshow (via Latex) containing all selected images one per slide.\n🔗Usage require this file from your main lua config file: This plugin will add a new exporter that will allow you to generate a pdf slideshow. The interface will let you add:\n a global title for the slideshow (prefix in all slide label) a delay for the transition between each slide Each slide will contain a single picture with a label at the bottom with the format (all fields can be the empty string):\n/ / 🔗Additional Software Required a PDF-Viewer pdflatex (Latex) 🔗Limitations 🔗Author Pascal Obry\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/pdf_slideshow/","tags":null,"title":"pdf_slideshow"},{"categories":null,"content":"🔗Name photils.lua - auto tag images based on feature recognition\n🔗Description A darktable plugin that tries to predict keywords based on the selected image. This plugin uses photils-cli to handle this task. Photils-cli is an application that passes the image through a neural network, classifies it, and extracts the suggested tags. Everything happens offline without the need that your data are sent over the internet.\n🔗Usage require this script from your main lua file To do this add this line to the file .config/darktable/luarc: require \u0026ldquo;contrib/photils\u0026rdquo; Select an image Press \u0026ldquo;get tags\u0026rdquo; Select the tags you want from a list of suggestions Press \u0026ldquo;Attach .. Tags\u0026rdquo; to add the selected tags to your image 🔗Additional Software Required photils-cli - https://github.com/scheckmedia/photils-cli at the moment only available for Linux and MacOS 🔗Limitations 🔗Author Tobias Scheck\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/photils/","tags":null,"title":"photils"},{"categories":null,"content":"🔗Name quicktag.lua - add shortcuts to speed up tagging\n🔗Description For faster attaching your favorite tags, the script adds shortcuts and the module \u0026ldquo;quicktag\u0026rdquo; in lighttable mode with a changeable number of buttons. To each button a tag can be assigned. If the tags do not exist in your database, they are added to the database once they get the first time attached to an image.\nThe number of buttons/shortcuts can be changed in the lua preferences. Changes in the number require a restart of darktable.\n🔗Usage set the number of quicktags between 2 and 10 in the preferences dialog and restart darktable if wanted set the shortcuts in the preferences dialog to add or change a quicktag, first select the old tag with the combobox \u0026ldquo;old quicktag\u0026rdquo;, enter a new tag in the \u0026ldquo;new quicktag\u0026rdquo; filed and press \u0026ldquo;set quicktag\u0026rdquo; use a shortcut or button to attach the tag to selected images 🔗Additional Software Required 🔗Limitations 🔗Author Christian Kanzian\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/quicktag/","tags":null,"title":"quicktag"},{"categories":null,"content":"🔗Name rate_group.lua - rate groups of images\n🔗Description 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:\nhttp://blog.chasejarvis.com/blog/2011/03/photo-editing-101/\n🔗Usage Assign a keyboard shortcut to each action via settings \u0026gt; shortcuts \u0026gt; lua\nI use the following shortcuts:\n 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 🔗Additional Software Required 🔗Limitations 🔗Author Dom H - dom@hxy.io\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/rate_group/","tags":null,"title":"rate_group"},{"categories":null,"content":"🔗Name rename-tags.lua - rename tags\n🔗Description 🔗Usage In lighttable there is a new entry: \u0026lsquo;rename tag\u0026rsquo; Enter old tag (this one gets deleted!) Enter new tag name 🔗Additional Software Required 🔗Limitations 🔗Author Sebastian Witt - se.witt@gmx.net\nBill Ferguson - wpferguson@gmail.com\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/rename-tags/","tags":null,"title":"rename_tags"},{"categories":null,"content":"🔗Name RL_out_sharp.lua - Richardson-Lucy output sharpening using GMic\n🔗Description This script provides a new target storage \u0026ldquo;RL output sharpen\u0026rdquo;. Images exported will be sharpened using GMic (RL deblur algorithm)\nEXAMPLE set sigma = 0.7, iterations = 10, jpeg output quality = 95, to correct blur due to image resize for web usage\n🔗Usage require this script from main lua file in lua preferences, select the GMic cli executable from \u0026ldquo;export selected\u0026rdquo;, choose \u0026ldquo;RL output sharpen\u0026rdquo; configure output folder configure RL parameters with sliders configure temp files format and quality, jpg 8bpp (good quality) and tif 16bpp (best quality) are supported configure other export options (size, etc.) export, images will be first exported in the temp format, then sharpened sharpened images will be stored in jpg format in the output folder 🔗Additional Software Required GMic command line interface (CLI) https://gmic.eu/download.shtml\n🔗Limitations MAC compatibility not tested Although Darktable can handle file names containing spaces, GMic cli cannot, so if you want to use this script please make sure that your images do not have spaces in the file name and path\n🔗Author Marco Carrarini - marco.carrarini@gmail.com\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/rl_out_sharp/","tags":null,"title":"RL_out_sharp"},{"categories":null,"content":"🔗Name slideshowMusic.lua - play music during a slideshow\n🔗Description darktable Script to play music during a Slideshow\n🔗Usage require this script from your main lua file 🔗Additional Software Required You need rhythmbox-client installed to use this script\n🔗Limitations 🔗Author Tobias Jakobs\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/slideshowmusic/","tags":null,"title":"slideshowMusic"},{"categories":null,"content":"🔗Name transfer_hierarchy.lua - move or copy image hierarchies from one location to another\n🔗Description Allows the moving or copying of images from one directory tree to another, while preserving the existing hierarchy.\n🔗Usage darktable\u0026rsquo;s native operations for moving and copying images in batches allow only one directory to be specified as the destination for each batch. Those wanting to move or copy images from a hierarchy of directories within darktable while preserving the directory structure, must take the laborious step of performing the operation one individual directory at a time.\nThis module allows the intact moving and copying of whole directory trees. It was designed for the specific use case of rapidly transferring images from a customary source (e.g., a staging directory on the local disk) to a customary destination (e.g., a directory on a NAS device).\nInstructions for operation:\n Select the set of images you want to copy.\n Click the \u0026ldquo;calculate\u0026rdquo; button. This will calculate the lowest directory in the hierarchy that contains every selected file (i.e., the common prefix of all the images' pathnames), and write its path into the \u0026ldquo;existing root\u0026rdquo; text box.\n If (a) you have specified the \u0026ldquo;customary source root\u0026rdquo; and \u0026ldquo;customary destination root\u0026rdquo; preferences, and (b) the selected images are all contained under the directory specified as the customary source root, then the \u0026ldquo;root of destination\u0026rdquo; text box will also be automatically filled out.\nFor example, suppose that you have specified \u0026lsquo;/home/user/Staging\u0026rsquo; as your customary source root and \u0026lsquo;/mnt/storage\u0026rsquo; as your customary destination root. If all selected images fell under the directory \u0026lsquo;/home/user/Staging/2020/Roll0001\u0026rsquo;, the \u0026ldquo;root of destination\u0026rdquo; would be automatically filled out with \u0026lsquo;/mnt/storage/2020/Roll0001\u0026rsquo;.\nBut if all selected images fall under a directory outside the specified customary source root (e.g., \u0026lsquo;/opt/other\u0026rsquo;), the \u0026ldquo;root of destination\u0026rdquo; text box must be filled out manually.\nIt is also possible to edit the \u0026ldquo;root of destination\u0026rdquo; further once it has been automatically filled out.\n Click the \u0026ldquo;move\u0026rdquo; or \u0026ldquo;copy\u0026rdquo; button.\nBefore moving or copying any images, the module will first replicate the necessary directory hierarchy by creating all destination directories that do not already exist; should a directory creation attempt fail, the operation will be aborted, but any directories already created will not be removed.\nDuring the actual move/copy operation, the module transfers an image by taking its path and replacing the string in the \u0026ldquo;existing root\u0026rdquo; text box with that in the \u0026ldquo;root of destination\u0026rdquo; text box (e.g., \u0026lsquo;/home/user/Staging/2020/Roll0001/DSC_0001.jpg\u0026rsquo; would be transferred to \u0026lsquo;/mnt/storage/2020/Roll0001/DSC_0001.jpg\u0026rsquo;).\n 🔗Additional Software Required 🔗Limitations 🔗Author August Schwerdfeger - august@schwerdfeger.name\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/transfer_hierarchy/","tags":null,"title":"transfer_hierarchy"},{"categories":null,"content":"🔗Name video_ffmpeg.lua - create a timelapse video from selected images\n🔗Description This plugin will add the new export module \u0026ldquo;video ffmpeg\u0026rdquo;.\n🔗Usage Go to Lighttable Select images you want to use as a video ffmpeg frames In image export module select \u0026ldquo;video ffmpeg\u0026rdquo; Configure you video settings Export 🔗Additional Software Required ffmpeg\n🔗Limitations This script has been tested under Linux only\n🔗Author Dominik Markiewicz\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/video_ffmpeg/","tags":null,"title":"video_ffmpeg"},{"categories":null,"content":"🔗Name select_untagged.lua - select all images that aren\u0026rsquo;t tagged\n🔗Description Enable selection of untagged images (darktable|* tags are ignored)\n🔗Usage 🔗Additional Software Required 🔗Limitations 🔗Author Jannis_V\n","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/lua.scripts.manual/scripts/contrib/select_untagged/","tags":null,"title":"select_untagged"},{"categories":null,"content":"","date":"0001-01-01T00:00:00Z","href":"https://darktable-org.github.io/luadocs/search/","tags":null,"title":"Search"}]