玩具:叫ai给我写了一个有模态的滚动窗口管理配置(windows/jwno/yasb)

各位大佬好。第一次发帖,如有不当之处多多包涵。由于新用户只能发两个链接,所以大部分词只能保持 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(用来聚焦窗口)、INNEROUTER(用于插入 jwno 的frame,就是用来装窗口的容器)、CARRY(用来移动窗口)、SIZE(用来调整窗口大小,我在这里用了旋钮)、ROLL(用来滚动窗口,旋钮)、ALPHA(调整窗口透明度,这个我不怎么用,旋钮),最后是 GOTO(用 hint 代替鼠标点击,有点像 avy?):

4 个赞

有意思啊,这个发b站应该能吸引些人。

有意思的想法,将显示屏当成无限大的平面。

更有意思的是,Jwno 用 Janet 写的,也是 lisp 家族的编程语言,看到了熟悉的括号。

Jwno 还有一个哇塞的功能,可以模拟鼠标点击屏幕上的任何一个按钮,实现全键盘操作。

这个窗口管理器真的很屌,值得放上链接:GitHub - agent-kilo/jwno: A tiling window manager for Windows 10/11, built with Janet and ❤️.

原来作者也是 emacs 用户,他的配置:GitHub - agent-kilo/.emacs.d 很简洁清爽的样子。

1 个赞

这个是全 AI 写的,不敢摆上台面。。。也懒得发了。

谢谢,我主帖没有办法发这个链接,因为超过了两条链接限制。

那个模拟点击确实不错,我觉得较为奇怪的是似乎只有 Jwno 是实现了。模拟点击的话,MacOS 有 Homerow,Linux 了解不多,只知道一个 AlfredoSequeida/hints。Jwno 还做了可以筛选元素(可以只显示输入框、按钮、超链接等),这个我从来都没想过还能这么玩,太离谱了。我个人的配置是将它们绑定在 GOTO mode 下了。

目前来看这个 wm 前景挺广。

非常强,不知道它是怎么截取屏幕里的元素的,可能这说明 Windows 的底层要比 macOS 开放。

mac下hammerspoon也可以,自动化神器

它是拿到了一些 macOS 的私有 API。

看了一下 jwno 的代码量差不多有快 10k 行了,如果楼主真的一行代码也不会写,AI 不是 one-shot 生成的,能够和 AI 沟通多轮迭代, 10k 行的代码量项目还能正常工作,没有失控,也是非常了不起的项目实战了。

不好意思,我可能没表述清楚,是我的配置(config)是全 AI 写的,Jwno 本身是由 agent-kilo 写的。