24

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?

John D. Cook
  • 29,517
  • 10
  • 67
  • 94

2 Answers2

19

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.

N.N.
  • 8,336
  • 12
  • 54
  • 94
Jérôme Radix
  • 10,285
  • 4
  • 34
  • 40
  • 4
    Using `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
3

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 (or open -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.

monotux
  • 3,657
  • 28
  • 30
  • 1
    linking 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