#awesome-wm
#awesome-wm
Вопрос:
Мне было интересно, можете ли вы поместить клиента в иерархию виджетов. В принципе, есть ли способ сделать что-то вроде:
local cool_background_widget = wibox.widget({
widget = wibox.container.background,
{
client, --??????
}
})
Я ожидаю, что это не так, но если это не так, есть ли какой-нибудь хитрый способ сделать это?
Ответ №1:
Короткий ответ: нет. Но есть несколько способов обойти это.
1. Использование client titlebars в качестве верхней панели
Если вам нужен только один клиент в вашем wibar / wibox, то вы можете поместить другую строку заголовка вокруг этого клиента и использовать ее в качестве верхней (или любой другой) панели. Чтобы добавить пространство, как в обычной панели, либо поиграйте со свойством client :struts()
, либо используйте screen.padding
.
2. Создайте пользовательский виджет-заполнитель
Второй вариант — создать новый виджет, а затем использовать его собственную :draw()
функцию в качестве крючка, чтобы узнать, когда перемещать клиента (используя c:geometry()
). Это в основном то, что делает ветка динамического макета клиента. Это связано с некоторыми проблемами, такими как необходимость постоянно повышать уровень клиента. Вы также должны отключить кучу вещей, чтобы предотвратить влияние существующего пути кода на клиента (например request::geometry
, обработчики, например, тот, который используется для перемещения / изменения размера клиента mod4 mouse
). Вам также нужно создать клиента floating
и sticky
получить правильный результат.
3: Патчи приветствуются
Важно иметь в виду, что нет никаких технических ограничений, которые мешают реализации этой функции. Существует существующая проблема, связанная с добавлением этого. В какой-то альтернативной вселенной, где у обоих основных разработчиков AwesomeWM было бы неограниченное время, это было бы особенностью. Сначала мы обсуждаем, как это сделать для отдельных «значков» системного трея. Эта проблема также является хорошей ссылкой, но в данном случае этого будет недостаточно для реализации того, что вы запрашиваете.