Appine: 在 Emacs 中打开MacOS 原生的浏览器、pdf,纵享丝滑。

最近开发了插件:GitHub - chaoswork/appine: Appine = App in Emacs, which is an Emacs plugin using a Dynamic Module that allows you to embed native macOS views (WebKit, PDFKit etc.) directly inside Emacs windows. You can open a browser, read PDFs, and watch videos in Emacs. Enjoy the full power of native macOS rendering, smooth scrolling, and hardware acceleration without leaving Emacs! · GitHub

名字叫 Appine,是 App in Emacs 的缩写。之前也尝试过类似 EAF 的插件,但是个人感觉体验还是不如 MacOS 自带的浏览器,pdf 阅读器。所以采用动态 module 的方法实现在 Emacs 中调用MacOS 原生浏览器和pdf,甚至 word,excel 等。

录了几段视频,可以在前面 github 的Readme 查看。

目前个人使用感觉还可以,推荐给大家~

21 个赞

好像当年的COM/OLE 呀 :grinning_face:

哎哟, 好看!
应该不用装什么依赖吧?
这跟这个 ewv 项目一样:
GitHub - heartnheart/ewv: emacs webview2 binding · GitHub

也是没有依赖, 只不过 ewv 是 Windows 平台的, 非常好用.

好看,zsbd。

这个支持么,视频貌似也播放不了,是什么问题呢?google的没有问题,baidu和b站的没有响应

太强了,说实话 都说 macOS API 封闭可 hack 性不强,结果 macOS 的内置 API 能够做到这种程度的 GUI 窗口内嵌实在是令我想不到的。我记得 EAF 在 wayland 上不能 native 运行就是因为 wayland 不能提供相应的 API 来完成类似的操作。这反差也太魔幻了!

1 个赞

tql, 回家了试一下

目前已经修复,请清空 straight 的 repos/appine 和 build/appine, 重新安装就可以了

并没有这回事

Wayland 与 X 的区别之一就在于它不是一个大一统的标准、比较

https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html

在 core 之外有人设计了一些流行的协议、然后主流的 compositor 选择了支持它们、见

它的介绍是:

The most popular Wayland protocols all in one place and without having to sift through different repositories and XML files.

Wayland compositor 会通过 registry 跟 client 沟通其支持【aka 实现】的协议、就像这样:

[ 783096.456] {Default Queue} wl_registry#2.global(12, "zwlr_layer_shell_v1", 5)

就表示我的 compositor (sway) 支持 zwlr_layer_shell 协议的第 5 版。顺带这个非标准协议应该就能实现你指的「类似的操作」。


他们骗你的

1 个赞

比较丝滑,赞。 有个问题哈,就是浏览器中 选中的文字 只能使用鼠标右键copy后ctrl+y到emacs scratch中么,comand+c后再ctrl+y后没有生效呢?

你在浏览器中 Cmd-C 之后,要点一下 scratch,把 scratch 激活然后再 C-y 拷贝,不然焦点还在浏览器上。

是要点一下聚焦到scratch上,没有效果所以来请教下;在浏览器上也是同样的情况。是我姿势不对么

虽然没有苹果机器,不过想请教下焦点在网页上时如何通过键盘操作将焦点切换到 Emacs。

试了下,挺好用的。我使用 yabai 平铺窗口管理器也没问题。我之前使用 eaf 在这块会出现问题。想请教下是否研究过 eaf 的机制,为啥 appine 没有这个问题?

切换窗口,C-x o就可以

1 个赞

作为一个码农,我想说:“在我这里运行没有问题啊~”哈哈,开个玩笑。

我怀疑是你的 Cmd-V 不知道怎么回事被 Emacs 拦截了,没有真的传送给 Appine-window。你能说一下你使用的环境么?macos 的版本,还有 emacs 的版本。我后面看看能不能增加一个 debug 模式,打印一些日志出来,来定位到具体是什么原因。

我没有研究过 eaf 的代码,可以去 eaf 的github上提个 issue~

macos 26.3.1,emacs 30.1;或许是我的Cmd-C Cmd-V的问题吧,我再找找,感谢。

这个目前暂时点击 Deactivate 来实现,后续可以考虑支持全键盘操作。比如加一个 ‘Cmd-z’ 快捷来将 Appine Window 挂起。

1 个赞

有个问题,使用了这个插件后,按 Esc 转成 M 的功能失效了。

比如 M-g l,我原本的按键流程是 Esc g l,这样可不用同时按M和g。