Aide sur Lua

Bonjour,

Je me permets d’ouvrir un nouveau post sur Lua car je crois que mon problème n’a pas été traité auparavant.

Lorsque je shoot en RAW+JPG je souhaite, dans Darktable, associer les notes en étoiles aux 2 fichiers du groupe (le RAW et le JPG donc).

J’ai trouvé pour cela le script suivant https://github.com/ribmo/lua-scripts/blob/master/contrib/rate_group.lua ou la discussion https://redmine.darktable.org/issues/8968

Grâce à ce fil https://darktable-fr.tuxfamily.org/forums/sujet/liste-de-scripts-lua-pour-darktable/ j’ai copié (sans trop comprendre ce que je faisais) ce code dans un Terminal :

[code]
cd $HOME/.config/darktable/lua
git clone https://github.com/itarozzi/darktable-lua-scripts.git
git clone https://github.com/johnnyrun/darktable_lua_gimp.git[/code]


J’ai copié le fichier luarc, créer le dossier lua et rajouter le script puis rajouter la ligne require « rate_group » dans le fichier luarc.

Lorsque j’ouvre Darktable, pas de message d’erreur, tout fonctionne comme avant sauf que la nouvelle fonctionnalité n’y est pas. Pas de champ « lua » dans le paramétrage des raccourcis non plus.

Est-ce que quelqu’un a déjà été confronté au problème ?

Je suis sous Ubuntu 16.04 et Darktable 2.0.3 (bientôt la 2.2 ?)

À part les artefacts lié au copier/coller, ce que tu as fait me semble correct. As-tu essayé de lancer DT dans une console avec l’option -d lua ?

J’ai ouvert le Terminal et j’ai tapé

darktable -d lua

Darktable s’est ouvert normalement, sans améliorations.

Mon fichier luarc ressemble à ça :

[quote]-- default lua require can’t handle yielding across « require » calls
– This version is implemented in pure-lua and avoids the problem
– override the require function for everybody

require = require « darktable/external/pygy_require/require ».require

require = « reject_group »

– vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua[/quote]
Ca peut être un problème ?

Personne n’a une idée sur ce qu’il faut faire pour faire fonctionner un script lua ? C’est peut être quelque chose d’évident mais étant débutant…

Dans le pire des cas j’ai trouvé un moyen de gérer mon workflow sans. Mais bon ça m’énerve de ne pas y arriver…

Pour chaque script que tu veux utiliser, tu dois :
[list]
[]avoir mis le fichier dans .config/darktable/lua, :wink:
[
]avoir ajouté une ligne « require » dans le fichier .config/darktable/luarc
[/list]
Par exemple, j’ai plusieurs fichiers .lua dans mon répertoire .config/darktable/ : essai.lua, fnav.lua, copy_paste_metadata.lua
Je veux utiliser les deux derniers. J’ai donc mis les deux lignes « require » dans .config/darktable/lua

[code]-- Scripts LUA à inclure

require « fnav »
require « copy_paste_metadata »
[/code]

Merci pour ton aide.
Pour moi j’ai bien effectué toutes les étapes citées. Mais ça ne fonctionne toujours pas. Visiblement je dois louper quelque chose… Ou alors le fichier que j’ai récupéré a un souci.
Je crois que je vais abandonner.

Faut pas baisser les bras…

Peux-tu essayer ceci ? :

(extrait d’un mail de Tobias Ellinghaus me@houz.org sur la liste darktable-user@lists.darktable.org)

As-tu vu l’autre fil de discussion à propos de lua ? (https://darktable-fr.tuxfamily.org/forum/showthread.php?tid=1567)
D’autre part, peux tu poster ici le résultat de la commande [font=Courier New][size=medium]ls -l .config/darktable/lua[/size][/font] ainsi que le contenu de ton fichier [size=medium][font=Courier New].config/darktable/luarc[/font][/size] ?

Dans un terminal, j’ai tapé :

darktable --luacmd 'print("Lua seems to work")'

Darktable s’est ouvert et dans le terminal j’ai eu la ligne suivante :

Lua seems to work

J’imagine donc que Lua fonctionne.

En tapant

ls -l .config/darktable/lua

J’obtiens :

ls -l .config/darktable/lua total 12 drwxrwxr-x 5 julien julien 4096 déc. 29 20:37 darktable_lua_gimp drwxrwxr-x 5 julien julien 4096 déc. 29 20:36 darktable-lua-scripts -rw-rw-r-- 1 julien julien 3101 janv. 14 12:03 rate_group.lua

Et enfin, le contenu de mon fichier luarc :

[code]-- default lua require can’t handle yielding across « require » calls
– This version is implemented in pure-lua and avoids the problem
– override the require function for everybody

require = require « darktable/external/pygy_require/require ».require

– vim: shiftwidth=2 expandtab tabstop=2 cindent syntax=lua

require = « rate_group »[/code]

Est-ce que le problème viendrait de mon fichier rate_group.lua ?

Dernier point : pour moi, en ouvrant Darktable, je devrais voir dans mes réglages de raccourcis claviers de nouvelles lignes qui permettraient d’appliquer une note à l’ensemble d’un groupe. Est-ce que je fais fausse route et les scripts lua ne se gèrent pas par là ?

Et maintenant si tu lances « darktable -d lua » en console as-tu des messages d’erreurs?
[hr]
Tu peux aussi tester:

$ cd .config/darktable
$ cat luarc
require « hello »
$ cat lua/hello.lua
print(« hello lua »)

Et maintenant:

$ darktable -d lua

Non, pas de messages d’erreurs, DT s’ouvre normalement.

Désolé, je n’ai pas compris. J’ai essayé de taper ça dans un terminal sans les $. J’ai en réponse que la commande require est introuvable et que hello.lua n’existe pas.
J’ai donc créé un fichier hello.lua qui contient le texte print(« hello lua ») et enregistré sous .config/darktable/lua. J’ai ajouté require = « hello » dans le fichier luarc puis j’ai relancé dans un terminal avec :

darktable -d lua

DT s’ouvre mais pas de messages d’erreurs, ni de « hello lua ».

Je vois deux erreurs dans ce que tu viens de poster :
[list=1]
[]les scripts dans .config/darktable/lua.
darktable_lua_gimp et darktable-lua-scripts sont des répertoires et non des scripts. Je ne sais donc pas si les scripts que tu veux utiliser se trouvent ou non dans ces répertoires et du coup jez ne connais pas leur nom. Il faut en lister le contenu.
[
]Ton fichier luarc contient deux lignes require qui me semblent mal formées toutes les deux (les autres lignes, celles qui commencent par – sont uniquement des commentaires et peuvent être supprimées sans problème)
Tu devrais avoir juste trois lignes dans ce fichier formées chacune de la façon suivante :Le mot require, pas de signe égal, enfin entre guillemets, le nom du script sans l’extention .lua. Exemple :require "rate-group"Concernant les deux autres scripts : soit il existe un fichier avec l’extension lua dans les deux répertoires que j’ai cité dans le point 1, et dans ce cas tu peux au choix : soit déplacer ce fichier dans le répertoire .config/darktable/lua et créer une ligne require dans luarc telle que décrite ci-dessus pour chaque script, soit tu crées directement la ligne dans luarc, mais en citant le sous répertoire dans le nom du fichier exemple :require « darktable_lua_gimp/nomDuScriptQueJeNeConnaisPasSansExtension »[/list]
Voili-voilà

Ça fonctionne ! J’ai tapé

require "rate_group"

dans le fichier luarc
Je ne sais pas pourquoi je m’étais mis en tête qu’il fallait écrire « require = XXXXXX »… Désolé…

Merci BEAUCOUP pour votre aide !

L’essentiel, c’est que ça fonctionne !
Et pour les deux autres scripts ?

Les 2 autres scripts c’était en fait des tests que j’avais fait à partir d’autres sujets du forum pour essayer de comprendre comment ça fonctionnait. Les fichiers étaient dans ces dossiers en question.
Quoiqu’il en soit je ne les utilisais pas. J’ai donc tout supprimé.

Encore merci !

Je viens de fouiner plus à fond le site allemand : http://www.multimedia4linux.de/ ou j’ai trouvé le script enfuse_pro.lua présenté par Harry DURGIN.
J’ai trouvé une explication de Lua pour germanophile (ou traduit en ligne), il y a aussi leurs scripts à télécharger et aussi leurs dernières mises à jour. Il y a un intéressant script pour écrire un texte invisible dans un .jpg par darktable et de mettre un mot de passe pour le lire.

Ok merci. J’irai y jeter un œil, armé de google trad’.