各位大佬好。第一次发帖,如有不当之处多多包涵。由于新用户只能发两个链接,所以大部分词只能保持 plain text 了。
我个人喜欢滚动窗口管理器(scrolling window manager, scrolling wm),虽然我 99% 的时间都在使用 Windows,不过玩 Linux 的时候使用过 Niri 和 PaperWM。Niri 的默认配置是使用 workspace + 数字(ws#),而 PaperWM 是使用 One Shot Mods 比如说 Super-Left 这种。用 Windows 的时候也试过 Komorebi 和 GlazeWM(还有一个叫 Workspacer 的东西但是不活跃了),GlazeWM 不是滚动的,然后 Komorebi(Nightly版本)和 GlazeWM 都使用的是 ws#。
这两个 keymap 我感觉都不舒适,虽然实际上这是一种 skill issue。不过我并不是 Linux 主力,所以无所谓。
有一次无意发现了 Jwno,我发现它给的配置好像是可编程的,和 Emacs 差不多。它和别的 wm 的不同是它有个 :toggle-parent-viewport,相当于把显示屏当作一个无限大的平面了。这时我就来劲了,因为如果把聚焦的窗口当作一个光标,这相当于是 selection first(就像 Helix/Meow那种),那我就可以对这个“选择”的对象进行操作。然后我就想到了一种和 Modal Editing 差不多的 Keymap,立刻就到竞技场抽卡,然后那时抽卡运气比较好,五六次就能写一个正常的配置了。不过这毕竟不是一个真的 Modal Editing 系统,我感觉本质上只是记忆技巧。。。
既然用到模态了,我想着肯定要一个 modeline 之类的东西。最初的实现是写入 json,后来用了 udp socket。当时只考虑两种选择,要么 YASB 要么 Zebar,这两个都挺麻烦的,YASB 的样式只支持很少,AI 说是用了一种 QSS 的东西,总之 AI 幻觉比较严重。Zebar 使用 Webview,看起来很美好,AI 说不支持 udp socket。由于我完全不懂任何编程语言,在“能用”和“用得漂亮”之间我选择了“能用一个不那么漂亮”的 YASB。
配置(100% AI):dots-nt/jwno/modal-goto-f23.janet at main · Ks4four/dots-nt · GitHub
我录制了视频来展示了这几个模态: NORMAL(用来聚焦窗口)、INNER 和 OUTER(用于插入 jwno 的frame,就是用来装窗口的容器)、CARRY(用来移动窗口)、SIZE(用来调整窗口大小,我在这里用了旋钮)、ROLL(用来滚动窗口,旋钮)、ALPHA(调整窗口透明度,这个我不怎么用,旋钮),最后是 GOTO(用 hint 代替鼠标点击,有点像 avy?):