In an Emacs org-mode file, when I click on a PDF the file opens in a PDF viewer. Similarly, when I click on a URL it opens in a web browser. But when I click on a path to an image file, the byte stream opens as text in the editor. How do I configure Emacs/org-mode to open images with a specified application, say an image editor or a browser?
2 Answers
In org-mode, this is org-file-apps
that control what to do when clicking on a URL-like text.
It is configured by default to :
((auto-mode . emacs)
("\\.mm\\'" . default)
("\\.x?html?\\'" . default)
("\\.pdf\\'" . default))
As said in org-file-apps help : auto-mode
matches files that are matched by any entry in auto-mode-alist
, so all files Emacs knows how to handle. Using this with command emacs
will open most files in Emacs.
You may have image file extension configured in auto-mode-alist. You could override this alist by doing something like this in your .emacs (for example, for png files) :
(add-hook 'org-mode-hook
'(lambda ()
(setq org-file-apps
(append '(
("\\.png\\'" . default)
) org-file-apps ))))
With this code, when I click on a link like this :
file:///e:/jrx/emacs/image.png
It opens the file outside emacs, using the default OS program associated to this file extension.
You don't have to change org-file-apps-defaults-windowsnt
, org-file-apps-defaults-gnu
or org-file-apps-defaults-macosx
to use the OS default program associated to the file extension.
It depends a bit on what operating system you use, but it should be configurable with org-file-apps
.
- On OS X, I would use
open
(oropen -a Application.app
) for opening files automagically - On Linux/BSD etc, I would use
xdg-open
(a bit tricky to setup, tho) - On windows, I guess I would use
open
(in the console)
Look at the variables org-file-apps-defaults-windowsnt
, org-file-apps-defaults-gnu
or org-file-apps-defaults-macosx
depending on your plattform.