Emacs 有没有可能实现像 Neovide 那样的果冻光标 ?

可以先看这个视频: bilibili: Neovide - 炫酷的 Neovim GUI 客户端.

那个光标的质感很像果冻, 而且快速移动时会拖出很长的残影.

果冻一样的质感可以呼应 cursor moving 的按键操作, 相当于二次确认. 按下移动键之后, 光标就会有向对应方向滑动的趋势.

残影可以很好的追踪思维的动向: 从哪里出发, 将要前往哪里.

我很喜欢这个 feature. 如果 Emacs 没有实现这个功能 (的打算) 的话, 我想提一个 feature request. 但我犹豫这个 request 是否合理.

7 个赞

holo-layer 应该可以轻松实现 Neovide 这种效果。

5 个赞

非常期待! 当初阻碍我从neovim转emacs的某一大原因就是neovide的丝滑的光标!

但是看实现是pyqt写的, 这是不是意味着在wayland下不能完美兼容?

加上eaf也是pyqt写的, 我或许要从wayland 换x11了

eaf是因为要粘贴到emacs窗口才需要x11 ,holo-layer是置顶显示,wayland也可以使用

1 个赞

目前 holo-layer 好像不支持 dwm 这种平铺窗口管理器,不知道未来会支持吗?

期待 :yum:

这个要靠社区开发者了, 原理上肯定没问题, 我个人没法去适配所有窗口管理器。

1 个赞

技术能力是技术能力, 我看了几遍 neovide 的视频, 我总觉得 neovide 的光标动画有点太夸张了, 会吸引编程的注意力。

1 个赞

2023-08-12 21.19.34 我用holo-layer实现了一下感觉还不错

29 个赞

大佬牛逼啊,zsbd

对于编程来说或许比较吸引注意力,但对于记笔记,写latex,煮咖啡来说,就是纯纯的加分项 :sunglasses:

2 个赞

太令人感动了 :sob:

3 个赞

炫酷是炫酷,但是太影响注意力了

已经合并了,大佬厉害

1 个赞

我早上自己更新测试了一下果冻光标的效果, 如果没有体验一下只看视频的话, 确实感觉很花哨影响注意力, 因为看视频的时候并不会写代码, 所以注意力都在看光标动画了。

但是当我实际写代码或者切换Buffer的时候, 想法就完全不一样了:

  1. 正常写代码: 其实大家都是一个字符一个字符的敲的, 这时候动画效果其实就是简单的横向移动光标, 不会影响注意力, 反而会因为有一点动画, 有一点力量激励的意味在里面,越写越想写的感觉
  2. 定位跳转: 比如我们搜索的时候, 这时候夸张的动画, 马上告知你跳转到Buffer的什么地方去了, 不用像原来那样要全屏扫描一下高亮行和光标在那里, 反而大大提升了效率
  3. 切换Buffer: 我们在不同Buffer切换之前都会潜意识地先确定光标在每个Buffer的什么地方, 然后才开始写代码, 这时候效果和第二点一样,夸张的动画马上告诉你光标在什么地方, 节省了判断光标位置的时间(判断光标位置每天无数次, 节省的时间叠加起来还是非常可观的)

我想了想, 为什么实际用和看视频的感觉差这么大? 因为实际用的时候, 夸张动画的地方其实都是需要快速定位光标的地方, 这时候夸张动画提前帮助用户定位了光标, 这种吸引注意力效果和光标定位的目标是一致的, 反而是好事。

本来只想开启看看修一下bug, 但是实际体验下来, 开启以后就不再会关闭了, 很炫很实用。

6 个赞

两位大佬给力!不知道在wsl2用gui emacs的情况有没有机会能用上holo-layer?

1 个赞

理论上是肯定可以的

其实一些优点我在一楼也提到了, 大致就是追踪思维的动向. 当然, 我故意没有说缺点, 因为我也没实际使用过neovide…

实用优点确实可以帮助快速找到光标, 隐藏优点我觉得是看着流畅的动画, 写代码挺解压的。

我在 hyprland, gnome, gnome-xorg 这三个桌面上分别启动了emacs-x11 和 emacs-pgtk,简单测试holo_layer是否能正常启动。

目前,只有在 gnome-xorg 上运行的 emacs-x11 能正常使用 holo-layer。以其他方式启动则会遇到各种各样的问题:

在hyprland上,启动两种emacs,在holo-layer运行后,emacs窗口会突然隐藏,直到做出一些窗口操作后才会再次现身,并且holo_layer似乎处于透明状态。

在gnome上,启动两种emacs,在holo-layer运行后,会突然出现黑屏。按win键预览桌面窗口,会看到多出了两个holo_layer.py窗口。

在gnome-xorg上,启动emacs-pgtk,则压根没有任何holo-layer的任何表面现象。不过应该没有人会在xorg用pgtk吧?

我目前还没有搞出一套生成bug的最小环境