From fa25ec4a2690fa3048a4489c31e0df726742dc6f Mon Sep 17 00:00:00 2001 From: supertobi Date: Fri, 1 Mar 2019 23:27:26 +0100 Subject: [PATCH 1/2] OpenInExplorer Tap to Space --- contrib/OpenInExplorer.lua | 52 +++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/contrib/OpenInExplorer.lua b/contrib/OpenInExplorer.lua index 380838b..edab7b6 100644 --- a/contrib/OpenInExplorer.lua +++ b/contrib/OpenInExplorer.lua @@ -43,39 +43,39 @@ du.check_min_api_version("5.0.0", "OpenInExplorer") --Detect OS and modify accordingly-- local proper_install = false if dt.configuration.running_os == "windows" then - proper_install = true + proper_install = true else - dt.print_error('OpenInExplorer plug-in only supports Windows OS at this time') - return + dt.print_error('OpenInExplorer plug-in only supports Windows OS at this time') + return end -- FUNCTION -- local function OpenInExplorer() --Open in Explorer - --Inits-- - if not proper_install then - return - end - local images = dt.gui.selection() - local curr_image = "" - if #images == 0 then - dt.print('please select an image') - elseif #images <= 15 then - for _,image in pairs(images) do - curr_image = image.path..'\\'..image.filename - local run_cmd = "explorer.exe /select, "..curr_image - dt.print_log("OpenInExplorer run_cmd = "..run_cmd) - resp = dsys.external_command(run_cmd) - end - else - dt.print('please select fewer images (max 15)') - end + --Inits-- + if not proper_install then + return + end + local images = dt.gui.selection() + local curr_image = "" + if #images == 0 then + dt.print('please select an image') + elseif #images <= 15 then + for _,image in pairs(images) do + curr_image = image.path..'\\'..image.filename + local run_cmd = "explorer.exe /select, "..curr_image + dt.print_log("OpenInExplorer run_cmd = "..run_cmd) + resp = dsys.external_command(run_cmd) + end + else + dt.print('please select fewer images (max 15)') + end end -- GUI -- if proper_install then - dt.gui.libs.image.register_action( - "show in file explorer", - function() OpenInExplorer() end, - "Opens File Explorer at the selected image's location" - ) + dt.gui.libs.image.register_action( + "show in file explorer", + function() OpenInExplorer() end, + "Opens File Explorer at the selected image's location" + ) end From 2e5e2e9f0de493cb525aee8f7ebe337331fdaef5 Mon Sep 17 00:00:00 2001 From: supertobi Date: Fri, 1 Mar 2019 23:30:58 +0100 Subject: [PATCH 2/2] OpenInExplorer added Nautilus support --- contrib/OpenInExplorer.lua | 56 ++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/contrib/OpenInExplorer.lua b/contrib/OpenInExplorer.lua index edab7b6..1dbe4d6 100644 --- a/contrib/OpenInExplorer.lua +++ b/contrib/OpenInExplorer.lua @@ -1,4 +1,5 @@ ---[[OpenInExplorer plugin for darktable +--[[ +OpenInExplorer plugin for darktable copyright (c) 2018 Kevin Ertel @@ -20,7 +21,7 @@ This plugin adds the module "OpenInExplorer" to darktable's lighttable view ----REQUIRED SOFTWARE---- -Microsoft Windows Operating System +Microsoft Windows or Linux with installed Nautilus ----USAGE---- Install: (see here for more detail: https://github.com/darktable-org/lua-scripts ) @@ -35,33 +36,34 @@ A file explorer window will be opened for each selected file at the file's locat local dt = require "darktable" local du = require "lib/dtutils" +local df = require "lib/dtutils.file" local dsys = require "lib/dtutils.system" --Check API version du.check_min_api_version("5.0.0", "OpenInExplorer") +local PS = dt.configuration.running_os == "windows" and "\\" or "/" + --Detect OS and modify accordingly-- local proper_install = false -if dt.configuration.running_os == "windows" then +if dt.configuration.running_os ~= "macos" then proper_install = true else - dt.print_error('OpenInExplorer plug-in only supports Windows OS at this time') + dt.print_error('OpenInExplorer plug-in only supports Windows and Linux at this time') return end --- FUNCTION -- -local function OpenInExplorer() --Open in Explorer - --Inits-- - if not proper_install then - return - end + +-- FUNCTIONS -- + +local function open_in_explorer() --Open in Explorer local images = dt.gui.selection() local curr_image = "" if #images == 0 then dt.print('please select an image') elseif #images <= 15 then for _,image in pairs(images) do - curr_image = image.path..'\\'..image.filename + curr_image = image.path..PS..image.filename local run_cmd = "explorer.exe /select, "..curr_image dt.print_log("OpenInExplorer run_cmd = "..run_cmd) resp = dsys.external_command(run_cmd) @@ -71,11 +73,41 @@ local function OpenInExplorer() --Open in Explorer end end +local function open_in_nautilus() --Open in Nautilus + local images = dt.gui.selection() + local curr_image = "" + if #images == 0 then + dt.print('please select an image') + elseif #images <= 15 then + for _,image in pairs(images) do + curr_image = image.path..PS..image.filename + local run_cmd = "nautilus --select " .. df.sanitize_filename(curr_image) + dt.print_log("OpenInExplorer run_cmd = "..run_cmd) + resp = dsys.external_command(run_cmd) + end + else + dt.print('please select fewer images (max 15)') + end +end + +local function open_in_filemanager() --Open + --Inits-- + if not proper_install then + return + end + + if (dt.configuration.running_os == "windows") then + open_in_explorer() + elseif (dt.configuration.running_os == "linux") then + open_in_nautilus() + end +end + -- GUI -- if proper_install then dt.gui.libs.image.register_action( "show in file explorer", - function() OpenInExplorer() end, + function() open_in_filemanager() end, "Opens File Explorer at the selected image's location" ) end