English | 简体中文
HoloLayer 是一个专为 Emacs 设计的多媒体图层插件, 它基于 PyQt 开发, 旨在显著增强 Emacs 的视觉体验。 插件提供了一系列的视觉效果增强功能, 包括现代化的窗口边框、 窗口跳转提示、 光标动画、 窗口截图、 透明浮动终端, 以及实时词典等等。 这些功能不仅让 Emacs 界面看起来更现代, 同时也确保了 Emacs 的运行性能不会受到影响。
- 安装 Emacs 28 及以上版本
- 安装 Python 依赖:
- Linux:
pip3 install epc sexpdata six inflect PyQt6 PyQt6-Qt6 PyQt6-sip
(ArchLinux 请用 pacman 来安装 PyQt6) - Windows:
pip3 install epc sexpdata six inflect pygetwindow PyQt6 PyQt6-Qt6 PyQt6-sip
- macOS:
pip3 install epc sexpdata six inflect pyobjc PyQt6 PyQt6-Qt6 PyQt6-sip
- 用
git clone
下载此仓库, 并替换下面配置中的 load-path 路径 - 把下面代码加入到你的配置文件 ~/.emacs 中:
(add-to-list 'load-path "<path-to-holo-layer>")
(require 'holo-layer)
(holo-layer-enable)
如果 holo-layer 没有正常启动, 请确保 holo-layer-python-command
路径和你系统 which python
的路径一致
备注:
- MacOS 请使用窗口模式
需要先安装 sort-tab, 再在配置中加上 (holo-layer-enable-sort-tab)
所有图标都放在子目录 icon_cache 下面, 欢迎贡献你认为好看的图标, 图标可以从 https://devicon.dev 或 https://icons8.com/icons/set/programming-language 这样的网站去查找。
修改 svg 图标颜色, 只用在 path 下增加 style="fill: hex-color"
属性即可。
- holo-layer-enable-cursor-animation: 是否开启果冻光标的动画, 默认是关闭的
- holo-layer-enable-type-animation: 是否开启光标敲击动画, 默认是关闭的
- holo-layer-enable-indent-rainbow: 是否开启彩虹缩进功能, 默认是关闭的
- holo-layer-enable-place-info: 在屏幕右上角显示光标处信息, 比如光标处单词的翻译, 默认关闭
- holo-layer-enable-window-border: 显示窗口边框, 默认关闭
- holo-layer-hide-mode-line: 打开这个选项隐藏 mode-line, 默认是关闭的
- holo-layer-active-window-color: 激活窗口的边框颜色, 只在超过两个窗口的时候显示
- holo-layer-inactive-window-color: 非激活窗口的边框颜色, 只在超过两个窗口的时候显示
- holo-layer-cursor-color: 果冻光标的颜色, 默认为 nil, 会跟随 Emacs 当前的光标背景色动态变化, 也可以设置颜色避免动态变换
- holo-layer-cursor-alpha: 果冻光标的 Alpha 透明度, 默认是 200, 完全透明是 0, 不透明是 255
- holo-layer-cursor-animation-interval: 果冻光标动画的间隔时间, 默认是 10ms, 不用担心时间间隔, 因为动画效果是用 PyQt 多线程绘制的, 不影响 Emacs 性能
- holo-layer-cursor-block-commands: 如果在某些情况下你不希望显示光标动画, 可以将命令字符串添加到这个列表中, 比如
self-insert-command
加入列表后, 插入字符不会产生动画 - holo-layer-cursor-animation-color-gradient: 光标动画的渐变颜色, 默认开启
- holo-layer-cursor-animation-color-gradient-start-value: 光标动画的渐变颜色的起始颜色, 会比光标背景色浅 50 个单位
- holo-layer-type-animation-style: 光标敲击动画的风格, 可以设置为
"flame"
,"firework"
,"firefly"
,"matrix"
,"supernova"
,"lightning"
,"balloon"
,"water"
,"hex"
, 默认是"flame"
- holo-layer-place-info-font-size: 光标处信息的字体大小, 默认是 18
- holo-layer-window-number-color: 窗口跳转数字的颜色, 用
holo-layer-jump-to-window
命令跳转窗口 - holo-layer-window-number-font-size: 窗口跳转数字的字体大小, 默认是 40
- holo-layer-sort-tab-ui: 是否渲染现代标签栏, 默认是 nil, 需要先安装 sort-tab
- holo-layer-sort-tab-font-size: 标签栏的文字大小
使用 Hyprland 请添加如下配置:
windowrulev2 = float,title:(holo_layer.py)
windowrulev2 = nofocus,title:(holo_layer.py)
windowrulev2 = noblur,title:(holo_layer.py)
windowrulev2 = fakefullscreen,title:(holo_layer.py)
关于其他问题, 请用命令 emacs -q
并只添加 holo-layer 配置做一个对比测试, 如果 emacs -q
可以正常工作, 请检查你个人的配置文件。
如果emacs -q
环境下问题依旧, 请到这里 反馈, 并附带 *holo-layer*
窗口的内容给我们提交 issue, 那里面有很多线索可以帮助我们排查问题。
如果你遇到崩溃的问题, 请用下面的方式来收集崩溃信息:
- 先安装 gdb 并打开选项
(setq holo-layer-enable-debug t)
- 使用命令
holo-layer-stop-process
停止 holo-layer 进程 - 重新打开 holo-layer, 并在下次崩溃时发送
*holo-layer*
的内容