LINUX.ORG.RU

Расположение окон в Awesome

 


0

1

Здравствуйте. Пишу собственный конфиг для Awesome. Использую стандартную левую тайлинговую схему размещения окон awful.layout.suit.tile.left.

Микрозадача - написать функцию под сочетание клавиш, которая делает выбранное окно (на котором находится фокус) из slave-стека master-окном. При этом master-окно должно стать первым (с визуальной точки зрения) в slave-стеке. Хочу получить подобную функцию.

##########      ##########
#    #   #      #    #   #
# A  #   #      # D  #   #
#    #   #      #    #   #
######   #      ######   #
#    #   #      #    #   #
# B* # D #  --> # A  # B #
#    #   #      #    #   #
######   #      ######   #
#    #   #      #    #   #
# C  #   #      # C  #   #
#    #   #      #    #   #
##########      ##########

Вопрос в следующем - как надо написать запрос, чтобы оконный менеджер упорядоченно выдал мне информацию о расположении окон. Далее привожу код функции

local function get_client_list()
    local client_list = awful.screen.focused():get_tiled_clients(true)
    local cl_str = ""

    for i, c in ipairs(client_list) do
        cl_str = cl_str .. string.format("%s\n",
           client_list[i].name
        )
    end

    naughty.notify({
        title = "SLS",
        text = string.format("Master - %s\nCurrent - %s\n\nClients:\n%s",
            awful.client.getmaster(),
            client.focus,
            cl_str
        ),
        timeout = 10
    })
end

Интересует нас вторая строка, так как согласно документации (https://awesomewm.org/apidoc/core_components/screen.html#get_tiled_clients) должна в массив записать окна в порядке: [B, D, A, C], то есть первым в списке является master-окно, затем slave-окна сверху-вниз.

На деле - мастер окно пишется первым, а все остальные записываются вразнобой. Я даже не смог выявить хоть какую либо закономерность в этом аспекте.

Подскажите пожалуйста, где я ошибаюсь, или куда посмотреть, чтобы понять как надо сделать. Чат ГПТ в этом вопросе помочь не может от слова совсем.