emacs-application-framework is a free, open source browsers & extensions project written in Python and released under GPL-3.0. It has 3,489 GitHub stars, 245 forks and 21 open issues, and was last pushed 26 days ago. On this registry it ranks #76 of 133 tracked projects in Browsers & Extensions, with 5 head-to-head comparisons available.

What is emacs-application-framework?

Emacs Application Framework (EAF) is a free/libre, open-source framework that extends the graphical capabilities of Emacs, built for hackers who work with numerous languages and text, are keyboard-driven, and want maximum freedom, extensibility, and introspectivity over their tools — potentially to the point of living in Emacs.

What it is

EAF is a Python-based framework that adds modern graphics to Emacs while keeping Emacs and Emacs Lisp intact. It is written in Python, licensed under GPL-3.0, and lives in the Emacs ecosystem, where it opens the door to the Python, Qt6, and JavaScript ecosystems without asking users to give up Emacs Lisp, which the project describes as the integral part of Emacs culture and irreplaceable. In this registry it is filed under Productivity & Utilities / Browsers & Extensions, alongside topics such as browser, pdf-viewer, file-manager, multimedia, rss-reader, and video-player.

The problem it solves is a graphics and concurrency gap. Emacs is more than 45 years old — older than virtually all operating systems people use today and almost as old as the first UNIX system — and Emacs Lisp lacks performance, proper multithreading, and serious graphical capability compared with modern GUI applications. The practical consequence the README names is a user sitting comfortably inside Emacs who still cannot open a real browser, a PDF, or a video without leaving it. EAF replaces that departure: instead of switching to an external viewer or browser, the work happens inside Emacs through dedicated applications such as eaf-browser and eaf-pdf-viewer.

Key capabilities

  • Web browsing through eaf-browser, described as a modern, customizable, and extensible browser inside Emacs.
  • PDF viewing through eaf-pdf-viewer, described in the README as the fastest PDF viewer in Emacs.
  • Media handling through eaf-music-player (playlists and audio visualization), eaf-video-player, eaf-image-viewer, eaf-camera, and eaf-video-editor.
  • Multi-threaded tooling through eaf-git, a fully multi-threaded git client, and eaf-file-manager, a fully multi-threaded replacement for dired-mode.
  • Live document preview through eaf-markdown-previewer and eaf-org-previewer, both real-time previewers.
  • Additional shipped applications including eaf-rss-reader, eaf-pyqterminal (a full-featured terminal), and eaf-mind-elixir (a mind map with balance layout).
  • Modular, extensible application set: each application lives in its own repository, with more listed at github.com/orgs/emacs-eaf/repositories.

Who uses it and how

  • Keyboard-driven Emacs users who work with numerous languages and text and want browsing, PDF reading, and media playback to stay inside their editor.
  • Users replacing dired-mode with eaf-file-manager for file management and running version-control work through eaf-git, both escaping Emacs Lisp's lack of proper multithreading.
  • Readers of PDFs, RSS feeds, images, and video inside Emacs, matching the registry topics browser, pdf-viewer, rss-reader, video-player, and multimedia.
  • Desktop users on the four platforms the README names: Linux X11, Windows, macOS, and FreeBSD.
  • An audience documented in public talks, EmacsConf 2020 ("Extend Emacs with EAF") and EmacsConf 2021 ("EAF: A 2021 Update"), with the repository at 3,489 stars and 245 forks.

Getting started

The README states that the installation method is very simple and that EAF supports Linux X11, Windows, macOS, and FreeBSD. The excerpt available here is cut off inside the install section and names no package, Docker image, or compose file, so the exact install command has to be taken from the project README.

How it compares

No list of paid products replaced by EAF appears in the facts, and this registry names no directly comparable tool, so EAF stands alone here as an Emacs graphics framework bridging Emacs Lisp with Python and Qt6. The README's own contrast is against modern GUI applications such as IDEA and VSCode, which it cites for the graphical performance Emacs lacks while EAF keeps the text-centric Emacs Lisp culture as the core rather than discarding it.

When to use it — and when not to

A self-hoster takes on an Emacs installation plus a Python and Qt6 stack, and the application set is spread across many separate repositories, so setup and updates touch more than one project. Users who want a pure Emacs Lisp environment with no external runtime, or who are unwilling to follow per-application install steps, should not pick it. The facts also show a truncated README excerpt and an incomplete install section, so anyone evaluating EAF should read the upstream README in full before committing; activity is current, with the last push on 2026-08-23 and 21 open issues.

project readme (upstream, from github) — read inline

English | 简体中文


A free/libre and open-source extensible framework that revolutionizes the graphical capabilities of Emacs.
The key to ultimately Live in Emacs

Vision

Emacs, the extensible text editor, is more than 45 years old. It is older than virtually all operating systems people use today, almost as old as the first UNIX system. During the decades of development, the world's brightest hackers have contributed their intelligence and creativity. Together they've constructed the most comprehensive and richest ecosystem that you can find in any software to date.

If you are a hacker who works with numerous languages and text, who's keyboard-driven and desires maximum freedom, extensibility, and introspectivity over your tool, maybe to the extent of living in it, Emacs will be your best bet.

Unfortunately, this 45 years of age is also one of the greatest disadvantages of Emacs. Comparing with modern software, Emacs lacks performance. Specifically Emacs Lisp lacks performance. It doesn't have proper multithreading and its graphical capabilities are seriously limited. It is far from what you'd expect from any GUI application today (such as IDEA or VSCode). You may think that Emacs, as a text-centric editor, doesn't need them, but have you ever run into a situation that, you sit comfortably typing commands and doing your Emacs sorcery, but can't help but ponder:

What if Emacs had a real browser?
What if this PDF or video file could be viewed efficiently without leaving Emacs?

Emacs, although infinitely extensible in text, is very limited in graphics. It shouldn't have to be this way. However, Emacs Lisp is the integral part of the Emacs culture, it carries decades of history with itself, it is what makes Emacs special. It is irreplaceable.

The vision of the Emacs Application Framework (EAF) project is, while fully retaining the rich history, culture, and ecosystem of Emacs and Emacs Lisp, to open up completely new doors to the ecosystems of Python, Qt6, and even JavaScript. EAF extends Emacs to the world of modern graphics, but still preserving the extensibility and customizability of Emacs. It will be the key to ultimately Live in Emacs.

Features

EAF is very extensible. We ship a lot of applications, feel free to choose anything you find interesting to install:

Browser PDF Viewer
Music Player File Manager

... plus many more!

EAF in EmacsConf

EmacsConf 2020: Extend Emacs with EAF EmacsConf 2021: EAF: A 2021 Update

Install

EAF supports Linux X11, Windows, macOS and FreeBSD. The installation method is very simple.

If you use Nix、 macOS or Gentoo, you need check Wiki first

1. Download EAF
git clone --depth=1 -b master https://github.com/emacs-eaf/emacs-application-framework.git ~/.emacs.d/site-lisp/emacs-application-framework/
2. Install/Update EAF applications and dependencies

You can use M-x eaf-install-and-update or manually run the install-eaf.py script in the EAF directory:

cd emacs-application-framework
chmod +x ./install-eaf.py
./install-eaf.py

There are many useful flags available for install-eaf.py, check it yourself using --help.

3. Load EAF Core

From here on, you can add the full path to the EAF installation directory to your Emacs load-path, then add the following to init.el:

(add-to-list 'load-path "~/.emacs.d/site-lisp/emacs-application-framework/")
(require 'eaf)
  • Alternatively, if you use use-package, you can use the following sample configuration for your convenience.

    (use-package eaf
      :load-path "~/.emacs.d/site-lisp/emacs-application-framework"
      :custom
      ; See https://github.com/emacs-eaf/emacs-application-framework/wiki/Customization
      (eaf-browser-continue-where-left-off t)
      (eaf-browser-enable-adblocker t)
      (browse-url-browser-function 'eaf-open-browser)
      :config
      (defalias 'browse-web #'eaf-open-browser)
      (eaf-bind-key scroll_up "C-n" eaf-pdf-viewer-keybinding)
      (eaf-bind-key scroll_down "C-p" eaf-pdf-viewer-keybinding)
      (eaf-bind-key take_photo "p" eaf-camera-keybinding)
      (eaf-bind-key nil "M-q" eaf-browser-keybinding)) ;; unbind, see more in the Wiki
    
4. Load EAF Apps

You can use below code to load applications browser and pdf-viewer that you installed. Please check Applications for the full list:

(require 'eaf-browser)
(require 'eaf-pdf-viewer)
5. Hooray!

Congratulations, you just installed EAF! You can try M-x eaf-open-demo (that is if you have demo installed, of course) to see if everything works properly, and enjoy the new possibilities of Emacs.

Below are launch commands of EAF Applications:

Application Name Launch
Browser M-x eaf-open-browser Search or Goto URL
M-x eaf-open-browser-with-history Search or Goto URL or Goto History
HTML Email Renderer M-x eaf-open-mail-as-html in gnus, mu4e, notmuch HTMl Mail
PDF Viewer M-x eaf-open PDF File
Video Player M-x eaf-open Video File
Image Viewer M-x eaf-open Image File
Markdown Previewer M-x eaf-open Markdown File, select markdown-previewer
Org Previewer M-x eaf-open Org File, select org-previewer
Camera M-x eaf-open-camera
Terminal M-x eaf-open-pyqterminal
File Manager M-x eaf-open-in-file-manager

readme truncated — read the full docs on github

Frequently asked questions

Is emacs-application-framework free to use?

emacs-application-framework is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does emacs-application-framework do?

EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs

What is emacs-application-framework written in?

emacs-application-framework is primarily written in Python. Its source is publicly available at https://github.com/emacs-eaf/emacs-application-framework, and it has 3,489 GitHub stars.