-
Notifications
You must be signed in to change notification settings - Fork 234
常见问题
Andy Stewart edited this page Jan 25, 2024
·
6 revisions
EAF主要实现这几个功能:
- 利用QWindow的Reparent技术来实现PyQt应用进程的窗口粘贴到Emacs对应的Buffer区域
- 通过Python EPC来实现Emacs进程和Python进程的控制指令和跨进程消息通讯
- 通过Qt的QGraphicsScene来实现镜像窗口,以对应Emacs的Buffer/Window模型
若想了解更多EAF设计背景,请看Wiki
- EAF和EXWM的共同点都是:“提升Emacs和别的程序的协作效率“
- EXWM是一个X11窗口管理器,通过X11协议来控制Emacs和其他程序,但是EXWM只是管理其他程序,但是它并不会修改应用程序的内在行为。
- EAF不是一个窗口管理器,EAF只是依赖Emacs自身的窗口管理功能显示自己
- EAF的目标是通过PyQt创造新的应用来扩展Emacs的多媒体能力。从Emacs本身的Buffer/Mode设计上看,它和你平常用的
xx-mode
插件没有啥区别,只是它用Qt来绘制内容,而不是Emacs自身的文本库来绘制内容 - EAF通过造轮子的方式,把大多数程序员常用的应用写出来以后,达到Live in Emacs的最终目标
- 基于EAF的架构设计,我们可以通过Elisp来控制Python,JavaScript和其他命令行工具,实现多语言扩展Emacs的编程模型。在坚持Emacs黑客文化和Elisp社区兼容性的前提下,让Emacs的多媒体能力能够跟上时代的发展
或许EAF和EXWM看起来有点相似,但它们在设计和理念上是两个完全不同的项目。所以请大家多多学习X11和Qt的区别,理解技术的本质,避免无意义的比较和争论。
EAF当前只能部分支持macOS,不是所有功能都可以正常工作,具体的情况请查看Wiki。
EAF确认可以工作的桌面环境或者窗口管理器包括:KDE、Gnome2、Gnome3、Mate、Xfce、LXDE、Sway、i3、QTile、Xpra、EXWM.
我们认为不同的窗口管理器对于X11协议的支持不够完善才导致这样的问题。
现在的解决方案是将命令wmctrl -m
中Name的值加入eaf-wm-focus-fix-wms
,如果还有问题,请在Github提出issue。
可以通过下面设置来通过代理访问互联网:
(setq eaf-proxy-type "http")
(setq eaf-proxy-host "127.0.0.1")
(setq eaf-proxy-port "1080")
如果你使用Socks5代理,你可以设置代理类型为:
(setq eaf-proxy-type "socks5")
基于规则的自定义代理请查看Wiki
Key | Event |
---|---|
C-h m |
eaf-describe-bindings |
C-c b |
eaf-open-bookmark |
C-c e |
eaf-open-external |
C-c i |
eaf-import-chrome-bookmarks |
M-0 |
eaf-get-buffer-screenshot |
M-/ |
eaf-get-path-or-url |
M-' |
eaf-toggle-fullscreen |
M-[ |
eaf-share-path-or-url |
Key | Event |
---|---|
C-c C-c |
eaf-edit-buffer-confirm |
C-c C-k |
eaf-edit-buffer-cancel |
C-c C-t |
eaf-edit-buffer-switch-to-org-mode |