客户端在启动时没有名称/类

时间:2016-08-31 13:08:13

标签: awesome-wm

我试图在特定标签上启动应用程序(Spotify)。规则尚未应用,现在我通过在" manage"中的通知中打印课程来检查客户端类。信号。这会导致空通知。

client.connect_signal("manage", function (c, startup)
    naughty.notify({title=c.class})
end)

当我重新启动awesome时,它会打印客户端类,那么为什么在最初启动客户端时它不起作用?

使用xprop,它还会打印类: WM_CLASS(STRING) = "spotify", "Spotify"

2 个答案:

答案 0 :(得分:1)

听起来像Spotify中的一个错误(我想想我之前听说过这个错误)。我猜想Spotify不遵循ICCCM,只有在它的窗口可见而不是之前才设置它的WM_CLASS属性。

我担心除了抱怨Spotify开发者修理他们的东西外,你不能做太多。

你可以通过在manage信号中启动一个计时器来解决这个问题,该计时器检查窗口是否会在短时间内被发现。或者,您可以执行client.connect_signal("property::class", function(c) if c.class == "Spotify" then print("This is now a spotify window") end end)之类的操作来对窗口类的更改作出反应(当然,您希望对Spotify的窗口执行比打印它们更有用的操作)。 (根据ICCCM,当一个窗口可见时,不允许更改其类别,但是谁关心标准......)

答案 1 :(得分:0)

我和claws-mail客户端有类似的问题。通过xprop检查它,它显示

WM_CLASS(STRING) = "claws-mail", "Claws-mail"

但是真棒只是没有适用它的规则。诀窍是通过提供一组可供选择的字符,在规则部分中给​​出了这两个类名称的真棒:

rule = {class = "[Cc]laws%-mail"}

我希望这也适用于你的spotify应用程序。

为了进一步阅读lua中的模式,我建议: https://www.lua.org/pil/20.2.html