You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Andy Stewart 0601bf2b81 Adjust eaf to EAF 8 years ago
app Include browser_buffer module to remove duplicate interface code. 8 years ago
core Fixed bug that sometimes key event no effect. 8 years ago
docker Adjust eaf to EAF 8 years ago
screenshot Finish org previewer. 8 years ago
.gitignore Update gitignore 8 years ago
HACKING.md Add docs for send_keystroke 8 years ago
LICENSE Initial commit 8 years ago
README.md Adjust eaf to EAF 8 years ago
TODOLIST.md Fixed bug that sometimes key event no effect. 8 years ago
eaf.el Update eaf view once emacs window size changed. 8 years ago
eaf.py Fixed bug that sometimes key event no effect. 8 years ago

README.md

What is Emacs Application Framework?

Emacs Application Framework is a development framework that developers can develop any PyQt program and integrate into Emacs.

This framework mainly implements three functions:

  1. Integrate PyQt program window into Emacs Frame using Xlib Reparent technology
  2. Listening to EAF buffer's keyboard event flow and controlling the keyboard input of PyQt program via DBus IPC
  3. Created a window compositer to make the PyQt program window adapt Emacs's Window/Buffer design

Using this framework, you can use PyQt develop powerful graphics programs to extend Emacs

Screenshots of EAF

Browser Markdown Previewer
Image Viewer Video Player
PDF Viewer Camera
File Transfer File Uploader
Air Share Org Previewer

Installation

  1. Install python dependences:

    Make sure python3 and pip3 has install in your operating system, then execute below command:

    sudo pip3 install dbus-python PyMuPDF grip qrcode pyqt5 python-xlib
  1. Clone this repository and add below code in your ~/.emacs
    (require 'eaf)

Package description.

Package Use for
python-xlib Stick app window into emacs frame
python-pyqt5 GUI library required for application development
dbus-python DBus IPC for python and elisp
PyMuPDF Render engine required for PDF Viewer
grip Markdown render server for Markdown Previewer
qrcode Render local file QR code

Or run EAF with docker

If you prefer to run linux in a docker, you can read Run EAF with docker

Why this awesome framework can't works with MacOS?

There are mainly three obstacles:

  1. I can't make dbus/python-dbus works on MacOS High Sierra
  2. This framework need use X11 reparent to stick Qt5 window to emacs frame, but i don't know how to make X11 works on MacOS.
  3. Qt5 QGraphicsView/QGraphicsScene can't work MacOS, specify QGraphicsVideoItem can't work.

Usage

NOTE:
EAF use DBus' session bus, it must running in general user.
Please don't run EAF with root user, root user just can access DBus's system bus.
App Way to open Key Event
Browser URL Left Button Open link current tab
Ctrl + Left Button Open link in new tab
M-f Forward page in history
M-b Backward page in history
Markdown previewer Type 'eaf-open' RET markdown filepath
Org file previewer Type 'eaf-open' RET org filepath
Image Viewer Type 'eaf-open' RET IMAGE filepath j Load next image in current directory
k Load previous image in current directory
Video Player Type 'eaf-open' RET video filepath Space Play or Pause
h Seek backward
l Seek forward
Pdf Viewer Type 'eaf-open' RET PDF filepath j Scroll up
k Scroll down
Space Scroll up page
b Scroll down page
, Scroll to end
. Scroll to home
t Switch scale mode
- Zoom out
= Zoom in
0 Zoomn reset
g Goto page
Camera Type 'eaf-camera'
Demo Type 'eaf-demo'
File Transfer Type 'eaf-show-file-qrcode'
Or use `dired-show-file-qrcode' in dired mode
File Uploader Type 'eaf-upload-file'
Air Share Type 'eaf-air-share'

Report bug

If you have any problem with EAF, please use command "emacs -Q" start Emacs first.

Then test again, if "emacs -Q" works fine, it's must be something wrong with your emacs config file.

If "emacs -Q" still have problem, please report bug

Join Us

Do you want to make Emacs a real operating system?

Do you want to live in emacs more comfortably?

Want to create unparalleled plugins to extend emacs?

Let's hacking together!

打赏

如果我的作品让你的生活充满快乐, 欢迎请我喝瓶啤酒, 哈哈哈哈