swayWM下的窗口总览(类似Mac的Mission Control)

刚整理老电脑上文件的时候想起来我还写过一个swayWM下的总览窗口的工具。效果大概如此。

这个特性我当时玩Linux的时候还挺想要的,为了这个试过CLFSWM(Expose有点简陋)和wayfire(挺炫酷的,就是不是我想要的效果,感觉上更类似于台前调度),最后还是自己写了一个。

原理是监听swayWM的IPC,然后根据窗口更新,工作区切换等事件调用grim维护一个各个窗口的snapshot列表(exposed.c)。然后需要expose的时候就展示(expose.c)。难点在于这个展示窗口的算法,我先后基于二维装箱,spiral layout(不知道中文是什么)搞了好久,最后抄了KDE的新算法。(话说如果有人知道MacOS的Mission Control用的是什么算法的话请告诉我)

依赖只有cairo/pango库和grim截图工具。欢迎尝试。

这个东西我已经挺久没维护了。如果有人愿意接手维护的话请跟我联系。感觉上Wayland(wlroots)相关的协议应该快做好了,不需要依赖IPC+grim了。以及我记得当时reddit上有人想要的鼠标支持我懒得去做。

感觉论坛上应该是有一些sway用户的,就在这里提一嘴(

1 个赞

顺便,当时我写的时候甚至是考虑过多屏幕的。但是没有特别的实现,因为我没有多个显示屏(

所以残留下来了一个EXPOSWAYMON环境变量,它指向的文件里写的应该是当前屏幕相关的信息(忘了存了什么了)。这个东西是exposwayd(就是那个读IPC的daemon)在启动的时候写的,会被exposway读。你或许可以改动它的数据,来满足一些我不清楚的多屏幕使用需求(