EAF和EXWM的区别

这几天看到很多人在Reddit讨论EAF vs EXWM.

今天重写更新了README文档,把和EXWM的区别简单易懂的写出来。

  1. EAF和EXWM的共同点都是:“提升Emacs和别的程序的协作效率“
  2. EXWM本身是一个X11窗口管理器,通过X11协议来控制Emacs和其他程序,但是EXWM只是管理其他程序,但是它并不会修改别的程序,比如它没法修改Chrome, PDF阅读器等GUI程序内在的行为
  3. EAF本身不是一个窗口管理器,EAF只是依赖Emacs自身的窗口管理功能显示自己
  4. EAF的目标是通过PyQt创造新的应用来扩展Emacs的多媒体能力,从Emacs本身的Buffer/Mode设计上看, 它和你平常用的 xx-mode 插件没有啥区别,只是它用Qt来绘制内容,而不是Emacs自身的文本库来绘制内容
  5. EAF通过造轮子的方式,把大多数程序员常用的应用写出来以后,达到Live in Emacs的最终目标
  6. 基于EAF的架构设计,我们可以通过Elisp来控制Python,JavaScript和其他命令行工具,实现多语言扩展Emacs的编程模型,在坚持Emacs黑客文化和Elisp社区兼容性的前提下,让Emacs的多媒体能力能够跟上时代的发展

EAF和EXWM在设计上是两个完全不同的项目,所以请大家多多学习X11和Qt的区别,理解技术的本质,避免无意义的比较和争论。

13赞

我认为主要是两者能做很多类似的事情,所以才有很多人来比较

同时因为很多人不了解EAF和Tile WM到底有啥区别,导致大家在没有搞明白的时候,看着大家歪楼,觉得没有必要比较。

也从侧面说明eaf的强大,虽然原理完全不一样

可能少了一个比较重要的点:EAF 和 EXWM (理论上)可以一起用。

可不可以集成 qtile (www.qtile.org),exwm 作为窗口管理很多地方受emacs的限制,比如虚拟机就支持不好,有些软件也不支持。EAF感觉要强大一些,能支持窗口管理就完美啦。

很多时候是平铺窗口管理器本身对焦点的处理不够完善导致的。 正确的方式是,平铺窗口管理器完善X11协议去支持这些软件,而不是EAF反过来去支持窗口管理器。

不想解释了,主要大多数开发者根本就搞不懂什么是X11协议,什么是窗口管理器,什么是XReparent。

2赞

EAF能不能做一个窗口管理器呢?感觉exwm表明用户需要一个基于emacs的窗口管理器

EXWM这种强迫用户换窗口管理器的做法,一旦某个软件的X11细节EXWM支持不了,用户就没法用特定的软件。 而EAF没有这种问题,EAF专注程序员用的大部分效率软件,剩余的所有软件都可以在KDE里面运行。

我不会做窗口管理器,EXWM能做的EAF都可以,而且KDE在所有软件的兼容性上有保障,偶尔用一下鼠标,不逼迫用户。

1赞

之前粗略得看了eaf的原理图。理论上eaf是通过dbus和程序进行通信,应该是任何语言编写并且支持dbus的程序,都可以用eaf玩吧?

是的,只是eaf选择了python

感觉像 exwm 这种基于 emacs 的窗口管理器的好处在于:

  1. 里里外外共享一个输入法 pyim ,如果你用rime, 如果 emacs 单独用一个 rime, 其他非 emacs 软件用另一个 rime, 老是要同步很别扭

  2. 省快捷键,如一个 C-x b 切换窗口 (buffer),所有软件窗口都一样, emacs 里面的窗口包如 ace-window 也能用,

这种一统天下的感觉非常好。

怎么可能统一天下?你应用内部的按键呢?

你只解决了切换到应用的快捷键,这个任何窗口管理器都可以做得到。

但是应用之间的行为没法统一,这才是真正的效率差别。

1赞

现在已经和一票窗口管理器兼容了,包括EXWM

原理图在那儿 想了解下

x11? wayland是不是就用不了? 之前sway下试了下PDF, 新开了窗口, 没有在Emacs 窗口下感觉

wayland也可以用哇

是吗 我后面在试试 。是不是xwayland能用啊?,我用的pgtk emacs https://github.com/masm11/emacs

是xwayland

Found https://github.com/manateelazycat/emacs-application-framework#how-does-eaf-work https://github.com/manateelazycat/emacs-application-framework/wiki/Hacking