我正在尝试生成一个浮动窗口,其屏幕位置将与当前聚焦、平铺或本身浮动的窗口相匹配。
我假设spawn命令本身应该驻留在
keys
列表中(像所有其他命令一样),而布局应该驻留在layoutHook
中。我可以通过设置唯一的 WM_NAME
来精确地区分窗口(urxvt
使这变得容易),并且我可以在 keys
列表中访问当前聚焦的窗口;但是,我不知道是否有一种正确的、内置的/非肮脏的方式将此信息向下传递到layoutHook
。
此外,我假设(也许是错误的?)在布局期间,聚焦窗口将是新生成的窗口 - 所以我无法在布局代码中访问它。
我的三个想法(hacky 降序排列):
所有这些看起来都有点老套;有更好的办法吗
不要将这部分作为生成命令的一部分,而将其作为 ManageHook 的一部分。基本用法就像
className "my-unique-class" --> doRectFloat blah
弄清楚要放入什么内容
blah
可能是最烦人的部分。您可以使用 ask
获取窗口的 ID,并使用 liftX (gets (layout . workspace . current . windowset))
获取当前布局。除了使用 doLayout
手动运行该布局,然后在其输出中搜索当前聚焦窗口的 ID 之外,我想不出一个好方法来计算当前聚焦窗口的矩形。作为其他参数所需的值也潜伏在 windowset
的各个位置,以及当前聚焦窗口的窗口 ID。