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


person thisisatotallyrandomname    schedule 03.03.2021    source источник


Ответы (1)


Вы ищете c.transient_for. Он содержит клиентский объект для родительского окна или nil.

person Uli Schlachter    schedule 03.03.2021
comment
Хороший намек. Это должно делать то же самое, что и parent = c:get_transient_for_matching(function(c2) return true -- get first parent end) - person thisisatotallyrandomname; 04.03.2021