[center][/center]Панель(wibox) в стандартном исполнении разбита на три части(layout) left,right,middle:
Код: Выделить всё
left layout | middle layout | right layout | --------------------------------------------------------------------------------------------------
Назовём wibox mywibox размеры,цвета и расположение предоставим библиотеке beautiful:
Меняем теперь базовую схему разделения и делаем панель «двухэтажной»,изменения секций панели выносим из файла конфигурации в любое удобное место конфигурации(здесь это директория .compact)
Код: Выделить всё
awful.screen.connect_for_each_screen(function(s)
-- Create the wibox
s.mywibox = awful.wibar({ position = beautiful.wibox.position, height = beautiful.wibox.height, screen = s }) -- размер панели в theme.lua
s.mywibox:set_bg(beautiful.wibox.bg) --цвет панели в theme.lua
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
compact.left(),
},
compact.middle(), -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
compact.right(),
},
}
end)
Левый layout нам нужно сделать вертикальным, разделённым пополам,для этого поделим его на две горизонтальные половины:
Код: Выделить всё
local awful = require("awful")
local beautiful = require("beautiful")
local wibox = require("wibox")
local radical = require("radical") local function new()
local layout = wibox.layout.flex.vertical() --размещение вертикально
local top_layout = wibox.layout.fixed.horizontal() --верхний горизонтальный
top_layout:add(m()) --прописываем верхние виджеты
local bottom_layout = wibox.layout.fixed.horizontal()
bottom_layout:add(p()) --место для виджетов
layout:add(top_layout)
layout:add(bottom_layout)
return layout
end
return (function(_, ...) return new(...) end )
Центральная часть wibox имеет два горизонтальных лейаута правый лейаут при этом поделен на два горизонтальных выглядит это так:
Код: Выделить всё
local awful = require("awful")
local beautiful = require("beautiful")
local wibox = require("wibox")
local radical = require("radical")
local common = require("compact.common") local function new()
local layout = wibox.layout.flex.horizontal() --сам layout расположен свободно горизонтально
local middle_layout = wibox.layout.fixed.horizontal() --левая увеличенная часть
middle_layout:add(u()) --место для размещения «больших виджетов»
middle_layout:add(c())
local right_layout = wibox.layout.flex.vertical() --регистрируем правую половину верт.
local top_layout = wibox.layout.flex.horizontal() --делим на два горизонтальных
top_layout:add(t()) --виджеты правый layout верх
right_layout:add(top_layout)
local bottom_layout = wibox.layout.fixed.horizontal()
bottom_layout:add(d()) --виджеты справа низ
right_layout:add(bottom_layout)
layout:add(middle_layout)
layout:add(right_layout)
return layout
end
return (function(_, ...) return new(...) end )
Остаётся только правая часть wibox-в моём случае оставлена поделенной и пустой без виджетов,но зарегистрированной в конфигурации панели по аналогии с левой.Причины для этого две: Всё с двух панелей свободно разместилось с запасом,деление панели получилось не фиксированным геометрически,а виртуальным с использованием разных по величине мест для заполнения.Теперь чтобы убрать всё лишнее с рабочей области достаточно нажать два раза: mod4 /. Внимательней посмотреть конфигурацию можно здесь
https://github.com/tupoll/awesome .Разделить как угодно можно любую из полученных секций панели при помощи библиотеки layout используя описанные ей комбинации верх,низ вправо,влево,сжать-растянуть и т.п.Тем более сейчас код более чем упрощён разработчиками вм.
Правильный линукс-BSD.