Messages : 3,202
Sujets : 49
Inscription : Feb 2016
Réputation :
72
Système d'exploitation:
Distribution(s) Linux: opensuse tumbleweed
Si tu es un peu codeur, ce n'est pas très difficile. Il y a un chapitre entier à la fin du manuel darktable, qui est un très bon pas à pas pour débuter. Ensuite si tu veux aller plus loin, le doc darktable-lua-api.pdf est le manuel de référence exhaustif de toutes les fonctions, structures de données et types qu'il est possible d'utiliser pour réaliser son script. Il est absolument indispensable ; sans lui, tu ne peux rien faire. Enfin, concernant la syntaxe générale du langage, il faut consulter le site Lua
Messages : 1,124
Sujets : 51
Inscription : Jun 2016
Réputation :
15
Système d'exploitation:
Distribution(s) Linux: Ubuntu 22.04
Bonjour, j'arrive bien jusqu'aux options lua dans les préférences, et j'ai mis comme navigateur de fichier, et pas d'option.
J'ai choisi F9 pour le raccourci clavier et quand je presse la touche, j'ai des boîtes qui me disent :
Impossible de trouver le fichier demandé. Vérifiez l'orthographe et essayez à nouveau.
Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /home/manu/16/160721-Jam » : Aucun fichier ou dossier de ce type
Puis :
Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /home/manu/- » : Aucun fichier ou dossier de ce type
Puis :
Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /home/manu/juillet » : Aucun fichier ou dossier de ce type
etc...
Puis :
Message d'erreur non géré : Erreur lors de l'obtention des informations du fichier « /media/shared/Photos/2016/07 » : Aucun fichier ou dossier de ce type
Oui, il y a des espaces dans les noms de répertoire et au final c'est "/media/shared/Photos/2016/07 - juillet 16/160721-Jam au Joug" qui devrait être ouvert.
dt stable / Ubuntu 22.04
Messages : 1,124
Sujets : 51
Inscription : Jun 2016
Réputation :
15
Système d'exploitation:
Distribution(s) Linux: Ubuntu 22.04
La solution à l'erreur que j'exposais concernant des chemins incluant des espaces : à la ligne 42 du script remplacer :
Code : local command = navigator_path.." "..navigator_options.." "..image_path
par :
Code : local command = navigator_path.." "..navigator_options.." '"..image_path.."'"
Ainsi le chemin de l'image, ou image_path sera encadré de quotes et passera comme paramètre unique, et non N paramètres séparés par des espaces.
Par ailleurs, les lignes :
<pre> Code : if coroutine.yield("RUN_COMMAND", command) then
dt.print_error(command.." failed")
end
</pre>
pour lancer la commande peuvent être remplacées par :
Code : dt.control.execute( command)
En tout cas, merci pour le boulot ! :-)
dt stable / Ubuntu 22.04
Messages : 3,202
Sujets : 49
Inscription : Feb 2016
Réputation :
72
Système d'exploitation:
Distribution(s) Linux: opensuse tumbleweed
Oops, je ne vois tes messages qu'aujourd'hui. Le flux RSS a buggé il me semble.
Effectivement, il faut gérer les espaces dans les noms de fichiers. C'est un grand classique et je suis tombé dans le panneau, comme d'hab :-(
Concernant le remplacement de "coroutine" par "execute", il semble que cela bloque l'exécution de DT tant que le navigateur est ouvert. D'un certain coté c'est prudent, car ça évite de laisser traîner des fenêtres du navigateur en arrière plan, mais d'un autre coté, ça bloque aussi les traitements en file d'attente. Pour l'instant, perso je laisse "coroutine"
Messages : 1,124
Sujets : 51
Inscription : Jun 2016
Réputation :
15
Système d'exploitation:
Distribution(s) Linux: Ubuntu 22.04
03-08-16, 11:37
(Modification du message : 27-12-17, 14:41 par manu.)
2513 a écrit :Concernant le remplacement de “coroutine” par “execute”, il semble que cela bloque l’exécution de DT tant que le navigateur est ouvert.
Je reproduis pas, DT fonctionne normalement après ouverture du dossier par le sccript lua, et j'en ouvre autant que je veux apparemment...
dt stable / Ubuntu 22.04
Messages : 3,202
Sujets : 49
Inscription : Feb 2016
Réputation :
72
Système d'exploitation:
Distribution(s) Linux: opensuse tumbleweed
j'ai pas testé. J'ai juste lu ceci dans le manuel : "Nous utilisons coroutine.yield pour appeler un programme externe. Le code normal os.execute bloquerait l'exécution d'autres codes Lua."
Effectivement ce n'est pas le code DT qui est bloqué, mais l'interpréteur Lua. Dans le doute, j'ai conservé la proposition de l'exemple du manuel
Messages : 1,124
Sujets : 51
Inscription : Jun 2016
Réputation :
15
Système d'exploitation:
Distribution(s) Linux: Ubuntu 22.04
OK, c'est raisonnable même si je n'observe pas de problème de script lua après utilisation du os.execute (Ubuntu 16.04/DT 2.0.5).
dt stable / Ubuntu 22.04
Messages : 3,202
Sujets : 49
Inscription : Feb 2016
Réputation :
72
Système d'exploitation:
Distribution(s) Linux: opensuse tumbleweed
Suite au passage à la version 2.2, l'api Lua à changé un peu et j'ai du en conséquence modifier le script. Voici la version à jour :
Code : --[[
FNAV
launch file navigator in photo directory with a shortcut
AUTHOR
Jean-Pirre Verrue (contact@jpverrue.fr)
INSTALLATION
* copy this file in $CONFIGDIR/lua/ where CONFIGDIR
is your darktable configuration directory
* add the following line in the file $CONFIGDIR/luarc
require "fnav"
USAGE
* configure this script :
* set a shortcut in preferences->shortcut->lua
* set file navigator path in preferences->lua options
* set file navigator options in preferences->lua options
* select a photo
* type your shortcut
* after use dont forget to close file navigator window !
LICENSE
GPLv2
]]
local dt = require "darktable"
dt.preferences.register("file_navigator","navigator_options",
"string","options",
"options du navigateur de fichier","")
dt.preferences.register("file_navigator","navigator_path",
"string","navigateur de fichiers",
"chemin complet du navigateur de fichier","")
local function fnav_shortcut(event, shortcut)
local images = dt.gui.action_images
local image_path = tostring(images[1].path)
local navigator_path = dt.preferences.read("file_navigator", "navigator_path", "string")
local navigator_options = dt.preferences.read("file_navigator", "navigator_options", "string")
local command = navigator_path.." "..navigator_options.." '"..image_path.."'"
dt.print_error("command="..command)
dt.control.execute(command)
end
dt.register_event("shortcut",fnav_shortcut,
"Lancer le navigateur de fichiers")
Messages : 1,124
Sujets : 51
Inscription : Jun 2016
Réputation :
15
Système d'exploitation:
Distribution(s) Linux: Ubuntu 22.04
Merci, ça fonctionne nickel ! :-)
dt stable / Ubuntu 22.04
Messages : 3,202
Sujets : 49
Inscription : Feb 2016
Réputation :
72
Système d'exploitation:
Distribution(s) Linux: opensuse tumbleweed
Tel quel, Le script ne fonctionne pas quand il doit ouvrir un dossier dont le nom contient une apostrophe ou un guillemet.
Voici une nouvelle version corrigeant ce bug.
Au passage, merci à Manu pour m'avoir suggéré ce besoin. Maintenant j'utilise ce script tout le temps !
Code : --[[
FNAV
launch file navigator in photo directory with a shortcut
AUTHOR
Jean-Pirre Verrue (contact@jpverrue.fr)
INSTALLATION
* copy this file in $CONFIGDIR/lua/ where CONFIGDIR
is your darktable configuration directory
* add the following line in the file $CONFIGDIR/luarc
require "fnav"
USAGE
* configure this script :
* set a shortcut in preferences->shortcut->lua
* set file navigator path in preferences->lua options
* set file navigator options in preferences->lua options
* select a photo
* type your shortcut
* after use dont forget to close file navigator window !
LICENSE
GPLv2
]]
local dt = require "darktable"
dt.preferences.register("file_navigator","navigator_options",
"string","options",
"options du navigateur de fichier","")
dt.preferences.register("file_navigator","navigator_path",
"string","navigateur de fichiers",
"chemin complet du navigateur de fichier","")
local function fnav_shortcut(event, shortcut)
local images = dt.gui.action_images
local image_path = string.gsub(tostring(images[1].path), '"', '\\"')
local navigator_path = dt.preferences.read("file_navigator", "navigator_path", "string")
local navigator_options = dt.preferences.read("file_navigator", "navigator_options", "string")
local command = navigator_path.." "..navigator_options..' "'..image_path..'"'
dt.print_error("command="..command)
dt.control.execute(command)
end
dt.register_event("shortcut",fnav_shortcut,
"Lancer le navigateur de fichiers")
|