[搬运] emacs-webkit -- xwidget-webkit 的继承者

原帖:

https://www.reddit.com/r/emacs/comments/jyowe0/introducing_emacswebkit_a_successor_to/

Repo:

5赞

My goal with emacs-webkit was to have something that will work with pgtk port of Emacs (in fact I primarily developed it on Wayland running pgtk Emacs). 狂喜

这个路线太棒了

  • Fix issue when ~tool-bar-mode~ or ~menu-bar-mode~ enabled.
  • Enable webkitgtk process sandboxing
  • Download requests
  • Make search incremental
  • Web extensions + Ad block
  • Browsing sessions/data and cookie management
  • Proxy settings
  • ~completing-read~ link completion/heading jumping
  • History ~display-table~ mode
  • Load progress and favicon on mode line
1赞

试了一下 比emacs以前那个webkit流畅好多

1赞

安全性是个问题。

哈哈哈哈,EAF都有,还有暗模式,aria2集成,文本选择等等

2赞

其实开发者说的Wayland支持,EAF已经很早就实现了,DBus如果替换掉,很快就可以支持Windows平台。

从浏览器的发展历史看,WebKit曾经是最好的嵌入式控件,Mozilla的XUL虽然也可以,但是对于开发者来说太复杂了。 现在浏览器控件方面只能用Google的Blink,也就是Qt中使用的QWebEngine,因为它性能最好。

虽然我自己也是GTK的粉丝,但是从客观来说,浏览器目前只能选择Blink,而Qt在很多控件细节上做的比Gtk要好太多。

综合考虑EAF选择了Qt和QWebEngine,为什么选择Python和JavaScript? 因为Python/JavaScript在应用绑定生态上几乎所有底层库都是现成的,比如浏览器就用QWebEngine,PDF就用pymupdf,终端就用browser/xterm.js, 甚至Git都有pygit2的现成绑定。需要开发任何应用的时候,想象力和编程能力就够了,不需要做很多底层的绑定工作,写完应用,干完活,节省下来的时间去享受生活。

如果要考虑全套的gtk,c,elisp, 不是不可以做到,而是花了太多时间在纯洁性上,最后效果也差不多。

9赞

试了一下,虽然编译和 require 成功了,但运行 webkit 命令后不显示网页,不知道是不是有哪里不对

开发者在 readme 中写到了 EAF ,大佬是针对这些做得回答

While I think its neat what EAF has been able to do, I personally have less of a desire to dive into its code due to its reliance on Qt (and hence Blink for its browser component) and python, and I suspect this may be a barrier for others as well. Furthermore I don’t think it has a technical path forward to cleanly working on Wayland due to its reliance on the XEmbed protocol. My goal with emacs-webkit was to have something that will work with pgtk port of Emacs (in fact I primarily developed it on Wayland running pgtk Emacs).

(帮助大家补充背景

@tumashu 我遇到了同样的问题。症状和你遇到的一样。我用的是master branch,应该可以排除native comp特性的锅。

@tumashu 我用emacs-pgtk-native-comp-git版本,现在webkit可以正常用了。不过我发现没办法用中文输入法。我用的是emacs-rime。在webkit里面进入insert mode、激活输入法之后,输入框里面就会失去焦点。你有没有遇到类似的问题?

我也有这个问题

这个问题应该还是需要类似eaf的处理方式。比如进入文本框之后直接触发一个临时buffer,然后在里面编辑文字,编辑完成,用C-c C-c完成,把buffer里面的内容复制到文本框里面。

xwidget 也是这样处理的

看样需要我们自己实现一下。

EAF有两种实现方式:

1.弹出emacs buffer

2.主动识别当前元素,可编辑元素直接输入(包括中文),不可编辑元素触发按键绑定

谢谢。我去研究一下代码。js部分应该可以直接移植到emacs-webkit上。

更新 富文本编辑eaf怎么处理的?弹出buffer肯定是不行了。

Emacs-webkit加载网页有点慢啊。加载第一个网页,速度很正常。如果新开一个session,加载网页就要超过一分钟。也不知道这是Emacs的单线程导致的还是WebKit的性能问题。有没有人遇到这种情况?

我这开baidu要开好久,google能秒开,,很迷惑,,

好在似乎不是Emacs卡住了。不管怎么加载慢,Emacs操作是正常的。

天知道是不是WebKit那里哪个部分没实现好,我看了一下模块部分的实现,就是简单包装了一下。应该还能优化。