exwm 和 eaf的目标不一样,exwm 只是像 tiling wm 那样把所有程序集成到 emacs frame 里面,但是 exwm 没法提升其他那些鼠标设计程序的效率。
eaf 第一用户用啥窗口管理器或桌面环境都可以,第二插件自己写,可以做到所有插件都是键盘操作导向的,而且和emacs的所有按键高度统一。
exwm 和 eaf的目标不一样,exwm 只是像 tiling wm 那样把所有程序集成到 emacs frame 里面,但是 exwm 没法提升其他那些鼠标设计程序的效率。
eaf 第一用户用啥窗口管理器或桌面环境都可以,第二插件自己写,可以做到所有插件都是键盘操作导向的,而且和emacs的所有按键高度统一。
恩,eaf 是不是 可以替换掉一些 Emacs 本身的一些东西比如 company 的那个下拉框是用 overlay 实现的,用 eaf 就可以直接开发出一个 gui 版本的下拉框?
eaf 是用来开发 GUI 的应用程序,为了无缝集成应用程序,做了很多框架性的东西,比如事件伪造和转发,窗口混合,窗口管理等工作。
如果要做一个Company的东西,非常简单,一个PyQT5窗口,然后 xlib reparent 粘贴上去,给 elisp post-command-insert-hook 加一个 hook ,PyQt5窗口跟着光标一动就可以了。
GUI版的下拉框太简单了。
凡事先从简单点的来嘛,现在 lsp-ui 的 lsp-ui-doc-mode 对 emacs 有版本要求不说,也很难用,感觉很适合用 eaf 来开发,此外 company-quickhelp-mode 也是,当需要显示的文档的内容比较多的时候感觉效果都不是太好
我的意思是,开发这种东西很简单,不需要用 eaf 框架。
最多半个小时就可以写完
哦,好吧…
The embedded browser lets you browse and navigate websites from within Oni, acting like another type of Vim buffer.
这个只是一个单独的控件吧,它不能像 EAF 那样直接分屏和转发事件。
Emacs 需要的是分屏以后,可以快速组合不同的 mode 的buffer进行协同工作。
如果只是一个控件嵌入,没法提升Emacs的协同作战的能力
我觉得 eaf, 现在要考虑 .QT 和 PyQt5 不同系统上, 版本兼容性的问题.
因为不是所有的用户都是 ArchLinux 的.
可能更多的用户, 会 pip install xxx. 这样安装.
其实没啥兼容性问题,就是有些发行版的Qt5弄得太差了。只要Qt5是好的,大部分都不会有问题
这个只是一个非常简单的demo, 你们可以先体验一下性能,等我带小孩和小狗出去遛弯,遛弯回来晚上睡觉之前就可以写一个完美的 PDF 阅读器
战斗力爆表,很强
我用 poppler 这个库重写了一版 PdfViewerWidget, 更新以后,直接 eaf-open 输入 PDF 文件路径就可以查看了 打开以后:
特性:
PDF 浏览器效果请看:https://github.com/manateelazycat/emacs-application-framework/blob/master/screenshot/pdf_viewer.gif
最大化最小化,xwindow大小不跟随emacs更新,没有处理最大化最小化更改事件?
那个还没做,你可以提issue
之所以没做,是因为我平常都是全屏用 emacs 的
到目前为止的有些快捷键:
App | Key | Event |
---|---|---|
Browser | Left Button | Open link current tab |
Ctrl + Left Button | Open link in new tab | |
Image Viewer | j | Load next image in current directory |
k | Load previous image in current directory | |
Video Player | Space | Play or Pause |
h | Seek backward | |
l | Seek forward | |
Pdf Viewer | 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 |
运行 eaf-open
+ image file 出现错误:
Traceback (most recent call last):
File "/home/stardiviner/Code/Emacs/emacs-application-framework/core/eaf.py", line 35, in <module>
from app.browser.buffer import BrowserBuffer
File "/home/stardiviner/Code/Emacs/emacs-application-framework/app/browser/buffer.py", line 25, in <module>
from PyQt5.QtWebKitWidgets import QWebView, QWebPage
ModuleNotFoundError: No module named 'PyQt5.QtWebKitWidgets'
我是用的 virtualenv python. version 3.6.5, Emacs version 26.1, Arch Linux. 我的 PyQt5 是从 pip 装的。
pip里面没有webkit,看我readme,从pacman里面装。
pip只有qtwebengine,这货还有bug,我还在死磕
pip的qtwebengine就是个坑货,我最后从下到上手动编译安装的
主要那个 QtWebengine 不能控制单击浏览器链接的时候是在当前窗口还是新的窗口打开。 这个让我很郁闷