Здравствуйте. Пишу собственный конфиг для 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-окна сверху-вниз.
На деле - мастер окно пишется первым, а все остальные записываются вразнобой. Я даже не смог выявить хоть какую либо закономерность в этом аспекте.
Подскажите пожалуйста, где я ошибаюсь, или куда посмотреть, чтобы понять как надо сделать. Чат ГПТ в этом вопросе помочь не может от слова совсем.