使 xzoom 在 i3wm 中浮动

使 xzoom 在 i3wm 中浮动

我正在尝试配置i3所以它xzoom总是以浮动模式启动。

问题是 xzoom 的窗口没有 aWM_CLASS并且它WM_NAME不是在窗口创建时设置的,而是在一个小的延迟之后设置的。

以下是前几毫秒的属性:

$ xzoom & sleep .01; xprop -id 0x2200001
_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
WM_ICON_NAME(STRING) = "xzoom"

正如您所看到的,唯一区别它的是WM_ICON_NAME.几毫秒后添加标题:

$ xprop
WM_NAME(STRING) = "xzoom x4"
_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
        window state: Normal
        icon window: 0x0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
WM_ICON_NAME(STRING) = "xzoom"

如果我使用 匹配窗口WM_NAME,屏幕会可怕地闪烁,因为其他窗口在回落到其位置之前会重新排列:

for_window [title="xzoom*"] floating enable

我尝试寻找一个命令准则那会查看WM_ICON_NAME,但我找不到任何。

有没有其他方法可以以浮动模式启动该程序?

答案1

我可以通过重新编译它来将 WM_CLASS 添加到 xzoom

    XChangeProperty(dpy, win, XA_WM_CLASS, XA_STRING, 8,
                    PropModeReplace,
                    (unsigned char *)progname, strlen(progname));

XA_WM_ICON_NAME就在 where设置之后的线上。

然后,for_window [instance="xzoom"] floating enable 在我的 i3 配置中为我工作!

很高兴这个旧软件仍然运行良好:)

答案2

或者,您可以尝试将以下行添加到 i3 配置中,它应该与窗口标题正确匹配:

for_window [title="^xzoom"] border none; floating enable

也就是说,我很高兴看到编译自定义始终是一种选择。

相关内容