StackOverflow обозначен как место поддержки сообщества AwesomeWM.
Я хотел бы иметь специальный тег в моей конфигурации AwesomeWM, где все время будут работать только три конкретных приложения. Мне удалось создать новый тег, используя образец конфигурации, и мне удалось отфильтровать приложения с помощью awful.rules.rules
и поместить их в тег.
У меня проблемы с пониманием того, как на самом деле работает механизм компоновки AwesomeWM. Я хотел бы добиться следующего: три статических столбца фиксированной ширины, каждое приложение расположено в своем собственном столбце, при изменении фокуса перестановки не происходит, когда какое-либо приложение не запущено, его зарезервированное место остается пустым.
___________________
| | | |
| | | |
| A | B | C |
| | | |
| | | |
___________________
Как указать макет в таком случае? Должен ли я написать свой собственный? Могу ли я использовать гибкую верстку и указать позицию для клиента? Какой рекомендуемый правильный способ достижения моей цели?
Ожидается, что дополнительное окно будет свернуто / скрыто. Только одно / два окна должны занять предполагаемые места и оставить пустое место для пропущенного окна.
I am experiencing troubles in understanding how AwesomeWM layout engine really works
Макет представляет собой таблицу с двумя записями:
name
- это строка, содержащая, ну, имя макетаarrange
- это функция, которая вызывается для упорядочивания видимых клиентов.Таким образом, вам действительно нужно написать функцию arrange
, которая упорядочивает клиентов так, как вы хотите. Аргументом этой функции является результат awful.layout.parameters
, но вам действительно нужно позаботиться о
.clients
- это список клиентов, которых следует упорядочить..workarea
- это доступное пространство для клиентов..geometries
- это место, где ваш макет записывает заданную геометрию клиентов.Я бы порекомендовал прочитать некоторые из существующих макетов, чтобы увидеть, как они работают. Например, макет max
очень прост:
function(p)
for _, c in pairs(p.clients) do
p.geometries[c] = {
x = p.workarea.x,
y = p.workarea.y,
width = p.workarea.width,
height = p.workarea.height
}
end
end
Should I write my own one? Can I use flexible layout and specify position for client?
Что ж, вышеупомянутое - это подход, основанный на написании собственного макета. В качестве альтернативы вы также можете сделать своих клиентов плавающими и назначить им геометрию через awful.rules
. Просто есть properties = { floating = true, geometry = { x = 42, y = 42, width = 42, height = 42 } }
. Однако с этим вы могли бы, например, случайно переместить одного из ваших клиентов.
What is the recommended correct way to achieve my goal?
Выбери один. не существует «только одного правильного ответа».
Что должно произойти, если к тегу добавить дополнительное окно? Тот же вопрос, если есть только одно / два окна.