Awesome-WM:在与父节点相同的标签上生成客户端

问题描述

我的目标是让拥有父级的客户在与其父级相同的标签生成。没有父母的客户端应该在活动标签生成(像往常一样)。

我的第一种方法是使用 client.connect_signal("manage",...) 连接信号。但是,我找不到获取客户端的父级或检查它是否有父级的方法。 感谢您查看我的问题!


更新 1:我找到了 client:get_transient_for_matching (matcher),但文档不是很有帮助。


更新 2:感谢 Uli 提示使用 client::transient_for 作为获取瞬态的更简单方法。使用

client.connect_signal("manage",function (c)                                                          
    parent = c.transient_for               
    naughty.notify({ preset = naughty.config.presets.critical,title = "Debug",text = tostring(c.window) .. " " .. (parent and tostring(parent.window) or "") })
                                                                                                      
    if parent then                                                                                    
        -- move new client to same tag and screen as parent                                                                          
        tag = parent.first_tag                                                                        
        screen = parent.screen                                                                        
        c:move_to_tag(tag)                                                                            
        c:move_to_screen(screen)                                                                      
    end                                                                                               
end)                                                                                                  

我试图实现我的目标并使用通知添加一个简单的调试输出。现在,只有极少数新客户实际上拥有不是 nil 的瞬态。例如,从终端生成 git gui 没有瞬态。但是,我坚信它应该(或者我误解了瞬态是什么)。


Ubuntu 20LTS,Awesome WM 版本 4.3-4,awesome-extra 2019021001

解决方法

您正在寻找c.transient_for。这包含“父”窗口或 nil 的客户端对象。