Ouvrir le dossier d'origine de l'image à partir de DT ?

Bonjour,

Existe-t-il un moyen simple, un raccourci clavier ou autre, pour ouvrir le « gestionnaire de fichier » du système directement à partir de la table lumineuse et se retrouver dans le dossier d’origine de la (1ère) photo sélectionnée ?

Vous faites comment ? Je copie dans les informations de l’image le « chemin complet » que je colle dans « Fichiers » (ex. nautilus), après un CTRL L, et je vire le nom du fichier à la fin de ce chemin. Pas super pratique.

Je crois bien qu’il n’y a rien de tel dans DT. Les seuls accès offerts via les dossiers sont :

  • Le bouton dossier du module « sélection » qui, dans un ensemble de photos affichées, te sélectionne toutes les photos du dossier dans lequel se trouve la photos courante.

  • Le filtre « dossiers » du module filtre de collection qui te permet de trouver des photos par dossier plutôt que par pellicule (C’est un poil redondant. C’est juste parfois plus commode pour la recherche car les dossiers sont montrés en vue arborescente alors que les pellicules ne le sont pas)

Mais dans touts les cas, tu ne verras jamais que les photos/fichiers ayant été importés.

Question : quel est ton besoin, exactement ? Car il y a peut être une solution purement DT pour ton problème.

Tu as raison, mieux vaut commencer par là ! :slight_smile:

Dans une session de traitement photo, j’ouvre DT, j’importe éventuellement des photos, en traite une et l’exporte sur disque, par exemple un JPEG. Ce tirage, je veux par exemple l’ouvrir pour voir ce qu’il donne : il me faut aller dans le dossier où il est exporté. Dans ASP, je faisais F9.

Il y a une solution DT qui correspond plus ou moins à ce que tu veux faire : sur la table lumineuse, en appuyant sur ‹ Z › tu affiches le résultat du post-traitement en plein écran. Tu peux aussi taper Ctrl-Z pour afficher avec identification des zones de netteté et Alt-Z pour avoir un affichage permanent (sans maintenir ‹ Z › enfoncé), et Ctrl-Alt-Z pour combiner tout ça.

La limite du truc, c’est que :

  • tu ne visualises pas le JPEG, juste le résultat du traitement ;

  • tu ne peux pas zoomer plus que l’affichage de la photo en plein écran

Personnellement, quand j’ai besoin de dépasser l’une ou l’autre de ces limites, j’ai souvent une occurrence de Digikam ouverte en plus de DT, qui me permet de visualiser réellement le jpeg et de pouvoir zoomer à 100%

Oui, plus ou moins et pas super satisfaisant non plus.
D’ailleurs, si ce que tu exportes tu veux le reprendre dans gimp par exemple, tu as un moyen sans passer par le gestionnaire de fichiers ?

Pour Gimp, j’ai lu qque part qu’il y a un script Lua pour faire ça. Ce qui me fait penser qu’on pourrait très facilement associer l’ouverture d’un gestionnaire de fichier avec une touche de fonction par exemple, avec un script Lua.

Oui, j’ai parcouru aussi la doc sur les scripts lua, ça doit être un moyen effectivement.

Pour gimp, c’est expliqué ici. Je testerai.

Pour faire ouvrir le gestionnaire de fichiers, il doit falloir s’inspirer de ce qu’on trouve par là. Après si quelqu’un trouve ou fait le script… :smiley:

J’ai déjà regardé les modèles de scripts Lua. Je crois que je saurais faire. Je vais regarder.

Voilà un premier jet. Ça me semble bien répondre à la question initiale, mais je suis ouvert à toute demande/proposition/critique :wink:

[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
  if coroutine.yield("RUN_COMMAND", command) then
    dt.print_error(command.." failed")
  end
end

dt.register_event("shortcut",fnav_shortcut,
"Lancer le navigateur de fichiers")
[/code]

Merci pour le script, il faut absolument que je regarde comment utiliser les scripts Lua;

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

Bonjour, j’arrive bien jusqu’aux options lua dans les préférences, et j’ai mis /usr/bin/nautilus 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.

La solution à l’erreur que j’exposais concernant des chemins incluant des espaces : à la ligne 42 du script remplacer :

local command = navigator_path.." "..navigator_options.." "..image_path

par :

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 :

[code]if coroutine.yield("RUN_COMMAND", command) then
dt.print_error(command.." failed")
end[/code]

pour lancer la commande peuvent être remplacées par :

dt.control.execute( command)

En tout cas, merci pour le boulot ! :slight_smile:

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

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 »

Je reproduis pas, DT fonctionne normalement après ouverture du dossier par le sccript lua, et j’en ouvre autant que je veux apparemment…

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

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

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 »)
[/code]

Merci, ça fonctionne nickel ! :slight_smile:

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 »)[/code]