Come aprire i file immagine con un'applicazione esterna in Dired?

Aug 24 2020

Linux Mint 19, Emacs 26.1 Ho diverse app per mostrare l'immagine, come Drawing, Image Viewer, XnView.

E dal file manager Nemo ho aperto con successo tutte le immagini di questa app. Bello.

Ma voglio aprire l'immagine in modalità Dired. Quindi nel mio init.el ho questo:

(when (require 'openwith nil 'noerror)
  (setq openwith-associations
        (list 
     (list (openwith-make-extension-regexp '("doc" "docx" "rtf")) "word" '(file))
     (list (openwith-make-extension-regexp '("mpg" "mpeg" "mp3" "mp4" "avi" "wmv" "wav" "mov" "mkv")) "vlc" '(file))
     (list (openwith-make-extension-regexp '("pdf")) "FoxitReader" '(file))
     (list (openwith-make-extension-regexp '("bmp" "gif" "jpeg" "jpg" "png" "tif")) "xnview" '(file))
     (list (openwith-make-extension-regexp '("rdp")) "Remote Desctop Connection" '(file))
     (list (openwith-make-extension-regexp '("xls" "xlsx")) "excel" '(file))
         ))
  (openwith-mode 1))

Quindi, quando sono in modalità dired e premo Invio sul file immagine, ricevo il messaggio successivo e non succede nulla:

openwith-file-handler: Opened DEEPSP_little.JPG in external program

Voglio aprire l'immagine da un'app esterna quando sono in modalità dired.

Risposte

1 Drew Aug 24 2020 at 02:33

Basta caricare la libreria standard dired-x.el, personalizzare l'opzione dired-guess-shell-alist-usere utilizzare !in Dired, per aprire qualsiasi programma desideri, per impostazione predefinita sui file contrassegnati o su un singolo file, per qualsiasi estensione di file immagine desideri.

C-x v dired-guess-shell-alist-user:

dired-guess-shell-alist-userè una variabile definita in dired-x.el.

Il suo valore è nullo

Documentazione:

Elenco di regole definito dall'utente per i comandi suggeriti.

Queste regole hanno la precedenza sulle regole predefinite nella variabile dired-guess-shell-alist-default(a cui sono anteposte).

Ogni elemento di questo elenco ha il seguente aspetto

(REGEXP COMMAND...)

dove ognuno COMMANDpuò essere una stringa o un'espressione Lisp che restituisce una stringa. Se questa espressione deve consultare il nome del file per il quale vengono richiesti i comandi della shell, può accedere a quel nome file come variabile file.

Se COMMANDvengono forniti più messaggi, il primo sarà il valore predefinito e il resto verrà aggiunto temporaneamente alla cronologia e potrà essere recuperato con M-x previous-history-element( M-p).

La variabile dired-guess-shell-case-fold-searchcontrolla se REGEXP fa corrispondere la distinzione tra maiuscole e minuscole.

Puoi personalizzare questa variabile.

a_subscriber Aug 24 2020 at 21:52

Ho trovato una soluzione.

Devo installare l'app XnView dal terminale in questo modo:

sudo apt-get install gdebi

wget http://download.xnview.com/XnViewMP-linux-x64.deb

sudo gdebi XnViewMP-linux-x64.deb

Quindi l'immagine riuscita si apre in modalità Dired. E apri l'immagine dall'app XnView .

Bello.

Non è necessario eseguire alcuna impostazione aggiuntiva in init.el

È abbastanza:

(when (require 'openwith nil 'noerror)
  (setq openwith-associations
        (list 
     (list (openwith-make-extension-regexp '("doc" "docx" "rtf")) "word" '(file))
     (list (openwith-make-extension-regexp '("mpg" "mpeg" "mp3" "mp4" "avi" "wmv" "wav" "mov" "mkv")) "vlc" '(file))
     (list (openwith-make-extension-regexp '("pdf")) "FoxitReader" '(file))
     (list (openwith-make-extension-regexp '("bmp" "gif" "jpeg" "jpg" "png" "tif")) "xnview" '(file))
     (list (openwith-make-extension-regexp '("rdp")) "Remote Desctop Connection" '(file))
     (list (openwith-make-extension-regexp '("xls" "xlsx")) "excel" '(file))
         ))
  (openwith-mode 1))