是不是也可以用来显示补全菜单/窗口?
是的,如果在python端实现菜单,lsp-bridge所有后端数据都不用发给emacs,lsp-bridge性能还可以继续提高,包括丝滑度,动画和像素对齐等细节都可以做到极致。
这算是重写了 Emacs 前端吧?
现在 lsp-bridge 即使配上 frame 已经足够快了, 暂时没有太大的动力用 holo-layer 写补全菜单, 虽然 holo-layer 写的补全菜单性能更好, 也可以做更多动画。
eaf, lsp-bridge还是holo-layer都坚持一个理念, 就是不管怎么扩展, 不要动Emacs本身代码, 这样增强的效果马上就可以体验。
如果改Emacs本身代码 + 多个操作系统平台, 这个工作量非常大, 而且bug很多。
请问可以给python加一个路径变量吗?我经常切换python环境,如果每个环境里都装依赖包就太冗余了
直接自定义 holo-layer-python-command 就好了。
holo-layer 预想的实用功能(窗口边框、 窗口跳转提示、 光标动画、 以及实时词典)已经基本实现, 还有一些其他功能, 比如:
- 窗口相机截图动效, 截取窗口截图的时候咔嚓一下
- 复用 eaf-pyqterminal 代码实现半透明的悬浮终端
- sort-tab的现代UI, 像完美的图标对齐, 贝塞尔曲线的标签圆弧, 标签重叠的阴影效果等等
- 代码像素级对齐线, holo-layer 来实现要比Emacs其他实现方案的效果(比如像素级虚线)和性能都要好很多
- acm的现代UI, 这个如果实现, lsp-bridge不但计算性能比VSCode快, 而且UI动画和丝滑程度也会超过VSCode
欢迎各位大佬一起玩
果冻光标很酷❗
我在使用 ArchLinux + Gnome 的组合,不开 Emacs 前,系统顶部的那一条是显示的,如下图
如果开了 Emacs,会出现两个问题:
- 顶部那一条不显示了
- 如果我将 Emacs 和 Chrome 左右分屏,那么 awesome-tray 的一条横线会保留
相关部分的配置为
(when (eq system-type 'gnu/linux)
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/lazycat-theme"))
(require 'lazycat-theme)
(lazycat-theme-load-dark)
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/awesome-tray"))
(require 'awesome-tray)
(awesome-tray-mode 1)
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/holo-layer"))
(setq holo-layer-enable-cursor-animation t)
(require 'holo-layer)
(holo-layer-enable)
)
尽管这个不知道是为啥,但是果冻光标确实 COOL
第一需要打开选项 holo-layer-hide-mode-line
第二,emacs focus out的时候要调整一下窗口得属性,就可以显示panel了
Emacs focus out 的时候Gnome Panel看不到的问题已经修复了, 更新即可。
(1) 打开 Emacs 前:
(2) 打开 Emacs 后:
顶部的panel消失了(3) 用 Super+左方向键
将 Emacs 分屏在左侧显示:
(4) 当 Emacs 处于 (3) 的状态下时,用 Super+右方向键
将 Emacs 分屏在右侧显示:
注:若在(3)的状态下使用 Super+上方向键
最大化 Emacs 再将 Emacs 分屏在右侧显示,则一切正常。看来目前像是:从最大化到左右分屏的切换过程是正常的,左分屏变换到右分屏,需要经过最大化这一中间态。
(5) 将 Emacs 最大化后用鼠标点击一下 Emacs,顶部 panel 恢复,底部红线消失,果冻光标状态异常
Mac 下,装好了 PyQT6等,出现了如下Traceback:
Traceback (most recent call last):
File "/Users/ethanlin/.emacs.d/site-lisp/holo-layer/holo_layer.py", line 35, in <module>
from plugin.window_screenshot import WindowScreenshot
File "/Users/ethanlin/.emacs.d/site-lisp/holo-layer/plugin/window_screenshot.py", line 1, in <module>
from PyQt5.QtCore import QObject, pyqtSignal
ModuleNotFoundError: No module named 'PyQt5'
用 brew 安装下 pyqt5 (这个好像不必要,见下帖),然后设置: (setq holo-layer-python-command “/opt/homebrew/bin/python3.10”) 可以运行了:
没对齐好像 ~
在plugIn中的 windows_screenshot.py 文件头两行代码:
from PyQt5.QtCore import QObject, pyqtSignal
from PyQt6.QtGui import QGuiApplication
第一行中的这个PyQt5,是不是应该是 PyQt6?
改了,zsbd
你这个是工具栏吧? 看着不像标题栏
Hello~
我很喜欢 holo-layer。
但是我是在 NixOS 上跑的 Emacs, 当我执行 ./holo_layer.py
之后,发现:
$ ./holo_layer.py
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/nix/store/1nd3zjh3if44d87zg95fixp32k3sjn7l-qtbase-6.5.2/lib/qt-6/plugins/platforms" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb, vkkhrdisplay, minimalegl, eglfs, offscreen, wayland, minimal, vnc, wayland-egl, linuxfb.
[1] 1759418 IOT instruction (core dumped) ./holo_layer.py
我的 nix-shell 的 default.nix
内容是:
with import <nixpkgs> { };
mkShell {
buildInputs = [ qt6.qtbase pkgconfig ];
LD_LIBRARY_PATH = "${stdenv.cc.cc.lib}/lib:${
lib.makeLibraryPath [ glib libGL ]
}:${fontconfig.lib}/lib:${xorg.libX11}/lib:${libxkbcommon}/lib:${freetype}/lib:${dbus.lib}/lib";
QT_QPA_PLATFORM_PLUGIN_PATH = "${qt6.qtbase}/lib/qt-6/plugins/platforms";
}
我的 QT_QPA_PLATFORM_PLUGIN_PATH
环境变量的值是: /nix/store/1nd3zjh3if44d87zg95fixp32k3sjn7l-qtbase-6.5.2/lib/qt-6/plugins/platforms
这个目录里的文件是:
$ l ${QT_QPA_PLATFORM_PLUGIN_PATH}
Permissions Size User Date Modified Name
.r-xr-xr-x 24k root 1 Jan 1970 libqeglfs.so
.r-xr-xr-x 502k root 1 Jan 1970 libqlinuxfb.so
.r-xr-xr-x 57k root 1 Jan 1970 libqminimal.so
.r-xr-xr-x 67k root 1 Jan 1970 libqminimalegl.so
.r-xr-xr-x 163k root 1 Jan 1970 libqoffscreen.so
.r-xr-xr-x 330k root 1 Jan 1970 libqvkkhrdisplay.so
.r-xr-xr-x 175k root 1 Jan 1970 libqvnc.so
.r-xr-xr-x 24k root 1 Jan 1970 libqxcb.so
你们觉得我哪个东西可能没配置好?
如果想在wsl2中用holo-layer,需要修改holo_layer.py文件的哪一部分?