Drag and drop images to Emacs org-mode
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 1 commit ahead, 12 commits behind abo-abo:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This extension facilitates moving images from point A to point B.

Point A (the source) can be:

  1. An image inside your browser that you can drag to Emacs.
  2. An image on your file system that you can drag to Emacs.
  3. A local or remote image address in kill-ring. Use the org-download-yank command for this. Remember that you can use "0 w" in dired to get an address.
  4. A screenshot taken using gnome-screenshot, scrot, gm, xclip (on Linux), screencapture (on OS X) or , imagemagick/convert (on Windows). Use the org-download-screenshot command for this. Customize the backend with org-download-screenshot-method.

Point B (the target) is an Emacs org-mode buffer where the inline link will be inserted. Several customization options will determine where exactly on the file system the file will be stored.

They are: org-download-method:

  1. 'attach => use org-mode attachment machinery
  2. 'directory => construct the directory in two stages:
    1. first part of the folder name is:

      • either "." (current folder)

      • or org-download-image-dir (if it's not nil).

        org-download-image-dir becomes buffer-local when set, so each file can customize this value, e.g with:

            -*- mode: Org; org-download-image-dir: "~/Pictures/foo"; -*-

        To set it for all files at once, use this:

            (setq-default org-download-image-dir "~/Pictures/foo")
    2. second part is:

      • org-download-heading-lvl is nil => ""

      • org-download-heading-lvl is n => the name of current heading with level n.

        Level count starts with 0, i.e. * is 0, ** is 1, *** is 2 etc. org-download-heading-lvl becomes buffer-local when set, so each file can customize this value, e.g with:

            -*- mode: Org; org-download-heading-lvl: nil; -*-

org-download-timestamp: optionally add a timestamp to the file name.

Customize org-download-backend to choose between url-retrieve (the default) or wget or curl.