从今天开始,Emacs里面可以运行任何你想要的程序 (Linux & Windows & Mac & BSD)

eaf-org-previewer 打开org文件预览,似乎是暗黑模式的。可能和我的主题有关。

参考readme.md, 发现 M-d toggle_dark_mode,但是按下去M-d没有反应。

提issue吧, 最近忙, 有空的时候我看看。

1 个赞

给 EAF Browser 增加了沉静式双语翻译, 以后在Emacs里面也可以快速研究英文资料啦。

更新 EAF, 打开浏览器, 查看英文网站, 然后按 Alt + i 就可以体验了。

6 个赞

EAF Browser 通过 JavaScript 的 document.activeElement 来探测网页是否正在输入, 在输入状态则发送字符事件给网页, 如果在非输入状态(比如浏览Google)则进入单按键命令模式(类似 vimium)。

但是EAF Browser这种探测方法在以下几个地方会失效:

  1. 网站安全防护, 比如QQ邮箱登录时 activeElement 会失效
  2. 云服务后台, 比如 Google 云里用 iframe 来嵌入终端模拟器
  3. 各种带 overlay 的网站, 比如 Reddit 登录的时候会有一个隐藏悬浮窗口来抢夺 activeElement

为了应对这些非标准的应用场景, 今天增加了一个 switch_to_input_mode 命令(Alt + z), 强制 EAF Browser进行输入模式。

每天都在用沉浸式翻译插件阅读外文材料,怎么从零写一个呢?

下面这篇文章以EAF Browser代码为例, 分享沉浸式双语翻译插件的原理, 核心代码只有90多行。

https://manateelazycat.github.io/emacs/eaf/2023/05/06/the-principle-of-immersive-translation.html

今天晚上在看 EAF Browser 一个 issue 时, 研究了一下为什么 QtWebEngine 可以播放 YouTube 视频而无法播放 B 站视频:

  1. QtWebEngine 默认使用 Chromium 内核, Chromium 内核并不能像 Chrome 那样默认就带一些视频的解码器, 比如 MP4
  2. Qt 默认编译没有带 -webengine-proprietary-codecs 参数, 所以编译出来的 QtWebEngine 没法利用 Linux 下 FFmpeg 的视频解码能力
  3. Qt 本身没法解码 HTML5 视频, 基于 Qt 开发的 PyQt 当然也不行

如果只是根据上面的信息, 最直接的方法就是自己编译 Qt 和 PyQt, 但是 Qt、 Chromium 本身都是大部头, 单机编译没有几天的时间根本编译不完, 这还不算修复编译报错后反复编译的时间。

作为 Arch 粉丝, 最简单的方法就是问肥猫大佬, 大佬告诉我三个重要信息:

  1. Arch 里 KDE 的基于 qt5-webengine 的 aura-browser 和基于 pyqt5-webengine 的 qutebrowser, 都能正常放 B 站视频
  2. Arch 里的 Qt 默认就开了 proprietary_codecs 编译参数: svntogit-packages/PKGBUILD at packages/qt6-webengine · archlinux/svntogit-packages · GitHub
  3. pip 安装 PyQt 是不靠谱的, 因为不确定是怎么实现的, 因为没人保证

知道这些信息就简单了, 就是删除 pip 安装的 PyQt6, 用 pacman 来安装 Qt6 和 PyQt6:

rm -rf ~/.local/lib/python3.10/site-packages/PyQt6*
sudo rm -rf /usr/lib/python3.10/site-packages/PyQt6*
sudo pacman -S python-pyqt6-webengine python-pyqt6 python-pyqt6-sip

为什么要执行前面两个删除命令呢? 因为如果你已经用 pip 安装了 PyQt 再用 pacman 安装后, PyQt6 目录下的文件会被两个工具同时写入, 导致 PyQt 程序启动时各种报错。

最后

给 EAF 打了一个补丁, EAF 在 Arch 下会自动用 pacman 安装 PyQt 来解决 EAF Browser 无法看 B 站视频的问题。 其他 Linux 发行版要确保 Qt 编译参数里面有 -webengine-proprietary-codecs , 同时保证软件仓库里的 PyQt 和 Qt 版本是匹配的。

当然, 如果你用的 Linux 发行版不支持这些, 最简单的方法就是换 Arch Linux 吧。 :wink:

7 个赞

在使用 chrome 的 zotero 插件的时候,遇到好的博客可以截取 snapshot 保存到后台运行的zotero 中。

实际使用的时候发现这个功能很好,因为 zotero 插件对于网页的截取效果很好。几乎是原汁原味地保留了网页的内容。

不知道 eaf-browser 能否实现这一点。期待有一天也能够在 Emacs 中搞定这件事。

已经有这样的插件了呀,你看一下这个浏览器的快捷键

音乐播放器最近有一个bug,暂停音乐后会改变播放速度,最后调试发现是 vue-audio-visual 这个组件的问题。

换成 audioMotion-analyzer 这个组件后,修复了播放速度改变的问题, 同时发现 audioMotion-analyzer 的效果和性能都要好很多。

3 个赞

SCHeng 大佬加的歌词界面, 太牛逼了。

6 个赞

今天修复了好几个偶然崩溃的问题, 建议大家都更新一下 EAF 。

这是使用eaf-open-browser打开网页的效果,请问这是正常的吗?之前没使用过EAF,不是很清楚。 使用 emacs -Q 测试了,也是一样。 我使用的 wm 是 hyprland-nvidia-hidpi-git,编译 Emacs 时开启了 pgtk,版本信息是 30.05 。以下是 EAF 的配置信息。

(add-to-list 'load-path "~/.emacs.d/site-lisp/emacs-application-framework")
(load "~/.emacs.d/site-lisp/Autoloads/eaf-loaddefs.el" nil t)  ;; Autoload
(require 'eaf)
;; (require 'eaf-browser)
(with-eval-after-load 'eaf-browser
  (setq eaf-browser-continue-where-left-off t
        eaf-browser-enable-adblocker t
        browse-url-browser-function 'eaf-open-browser
        eaf-browser-blank-page-url "https://www.baidu.com")
  (defalias 'browse-web #'eaf-open-browser))

在xwayland下使用最佳。

刚刚编译了 xwayland 的版本,不过还是一样的问题,可能是使用 hyprland-nvidia-hidpi 的原因。

EAF最佳使用环境是 KDE 和 Gnome XWayland

与 EAF 无缘了 :joy:

主要是 Wayland 那帮人把很多 X11 的高级功能隐藏到窗口管理器内部, 但是又不对外暴露 API, 导致我折腾不赢他们。

曾经Gnome43的时候已经可以在 Wayland Native 工作了, Gnome那帮人 Gnome 44 又改代码了, 十多年一直不稳定。

所以 Wayland Native 为基础的桌面环境和窗口管理器都没法完美工作。

2 个赞

@Mumulhl 大佬开发的 GitHub - mumu-lhl/eaf-pyqterminal: A terminal written in PyQt6 for the Emacs Application Framework.

用Qt来绘制的终端模拟器, 启动性能比基于 Xterm.js 实现的速度要快很多, 同时兼容Emacs按键, 期待完美实现。

经过社区大佬 @Mumulhl 3个星期的开发, EAF PyQterminal 终于达到好用的程度:

  1. 启动速度比 eaf-terminal xterm.js 版本快很多,秒开
  2. 比所有Emacs内置终端更强大,支持图形渲染
  3. 相对于 vterm 来说, 不用编译动态模块
  4. 可以用Qt和Python快速扩展终端新功能

Enjoy hacking!

3 个赞

今天对EAF音乐做了两个增强:

  1. 添加网易云音乐和QQ音乐两个后端抓取歌词
  2. 用直方图算法判断图片深浅来调整歌词字体颜色, 保证所有封面的歌词都可以看清楚

喜欢用EAF播放音乐的同学可以更新一下, 现在歌词体验非常丝滑了。

1 个赞