emacs-application-framework

emacs-eafGPL-3.0活跃维护

把浏览器、PDF 阅读器、视频播放器等图形应用直接嵌进 Emacs,用 Python 和 Qt 补上 Emacs 原本薄弱的图形界面能力。

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

暂无版本3,497star247fork同步于 2026-11-10 11:40 UTC

怎么上手

由 README 提炼,执行前请确认
git clone --depth=1 -b master https://github.com/emacs-eaf/emacs-application-framework.git ~/.emacs.d/site-lisp/emacs-application-framework/
cd emacs-application-framework && chmod +x ./install-eaf.py && ./install-eaf.py
硬件要求按 README 说明

README 未说明具体显存或 GPU 型号要求,仅说明支持 Linux X11、Windows、macOS 和 FreeBSD。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 Python 和 Qt6 给 Emacs 补上现代图形能力,让浏览器、PDF、视频都能在 Emacs 里跑

把浏览器、PDF 阅读器、视频播放器等图形应用直接嵌进 Emacs,用 Python 和 Qt 补上 Emacs 原本薄弱的图形界面能力。

核心能力

  • 用 Python 和 Qt6 扩展 Emacs 的图形渲染能力
  • 内置浏览器、PDF 阅读器、视频与音乐播放器等应用
  • 提供多线程 Git 客户端和替代 dired 的文件管理器
  • 支持 Markdown 和 Org 实时预览及思维导图
  • 通过 install-eaf.py 统一安装和更新应用与依赖

容易踩的坑

安装后需在 init.el 中把 EAF 目录加入 load-path 并 require eaf,还要单独 require 各应用模块;升级时除了 git pull 还必须重新运行 install-eaf.py 更新依赖;使用 Nix、macOS 或 Gentoo 时需先查阅 Wiki 的专门说明。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    English | 简体中文

    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:

    BrowserPDF Viewer
    Music PlayerFile Manager

    ... plus many more!

    EAF in EmacsConf

    EmacsConf 2020: Extend Emacs with EAFEmacsConf 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 NameLaunch
    BrowserM-x eaf-open-browser Search or Goto URL
    M-x eaf-open-browser-with-history Search or Goto URL or Goto History
    HTML Email RendererM-x eaf-open-mail-as-html in gnus, mu4e, notmuch HTMl Mail
    PDF ViewerM-x eaf-open PDF File
    Video PlayerM-x eaf-open Video File
    Image ViewerM-x eaf-open Image File
    Markdown PreviewerM-x eaf-open Markdown File, select markdown-previewer
    Org PreviewerM-x eaf-open Org File, select org-previewer
    CameraM-x eaf-open-camera
    TerminalM-x eaf-open-pyqterminal
    File ManagerM-x eaf-open-in-file-manager
    RSS ReaderM-x eaf-open-rss-reader
    Git ClientM-x eaf-open-git
    Map Route PlanningM-x eaf-open-map
    File SenderM-x eaf-file-sender-qrcode or eaf-file-sender-qrcode-in-dired
    File BrowserM-x eaf-file-browser-qrcode
    AirshareM-x eaf-open-airshare
    MarkmapM-x eaf-open Markdown or Org file, select markmap
    MindmapM-x eaf-create-mindmap or M-x eaf-open-mindmap
    MS Office ViewerM-x eaf-open-office
    JupyterM-x eaf-open-jupyter
    Music PlayerM-x eaf-open-music-player
    System MonitorM-x eaf-open-system-monitor
    DemoM-x eaf-open-demo to verify basic functionality
    Vue DemoM-x eaf-open-vue-demo to verify vue.js functionality
    • EAF Browser and PDF Viewer support Emacs built-in bookmark operation, with M-x bookmark-set (defaulted to C-x r m) and M-x bookmark-bmenu-list (defaulted to C-x r l).

    Upgrade

    Also, you should regularly git pull and run install-eaf.py (M-x eaf-install-and-update) to update EAF, its applications, and relating dependencies.

    Report bug

    For any installation and configuration assistance, please read the Wiki and FAQ.

    If you encounter a problem with EAF, and it occurred after pulling the latest commit, please check the Mandatory Procedures to Keep Your EAF Up-To-Date page first.

    For any other problems, please use emacs -q and load a minimal setup with only EAF to verify that the bug is reproducible. If emacs -q works fine, probably something is wrong with your Emacs config.

    If the problem persists, please report it here with the *eaf* buffer content. It contains many clues that can help us locate the problem faster.

    If you get a segfault error, please use the following way to collect crash information:

    1. Install gdb and turn on option (setq eaf-enable-debug t)
    2. Use the command eaf-stop-process to stop the current process
    3. Restart eaf, send issue with *eaf* buffer content when next crash

    EAF in the community

    A list of other community packages that use EAF to enhance their graphical experiences!

    If we missed your package, please make a PR to add it to the list.

    Contributor

    Join Us

    Do you want to make Emacs a real "operating system"?

    Do you want to live in Emacs more comfortably?

    Do you want to revolutionize the capabilities of Emacs?

    Let's hack together!