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?
-
FYI, Emacs is (in theory) able to display images itself. http://www.gnu.org/s/emacs/manual/html_node/elisp/Images.html – phils Oct 20 '10 at 04:19
-
1@phils try `org-display-inline-images' – Tao Peng Oct 20 '10 at 10:39
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.

- 8,336
- 12
- 54
- 94

- 10,285
- 4
- 34
- 40
-
4Using `append` together with `add-hook 'org-mode-hook` seems to append to the list whenever Org-mode is invoked. This can flood the list with `"\\.png\\'" . default`. You might be better of using a `add-to-list` construct such as in http://stackoverflow.com/a/8836108/789593 instead. – N.N. Jan 12 '12 at 16:59
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.

- 3,657
- 28
- 30
-
1linking to https://askubuntu.com/questions/646631/emacs-doesnot-work-with-xdg-open for people struggling with `xdg-open` :) – xeruf Feb 24 '21 at 10:58