Панель(wibox) в стандартном исполнении разбита на три части(layout) left,right,middle:
- Код: выделить все
left layout | middle layout | right layout | --------------------------------------------------------------------------------------------------
Назовём wibox main размеры,цвета и расположение предоставим библиотеке beautiful:
- Код: выделить все
bar["main"] = awful.wibox({ position = beautiful.wibox.position, height = beautiful.wibox.height })
bar["main"]:set_bg(beautiful.wibox.bg)
Меняем теперь базовую схему разделения и делаем панель «двухэтажной»,а центральную часть оставим без изменения
- Код: выделить все
| top left layout | middle layout | top layout | top right layout | |bottom left layout| |bottom | bottom right layout
Для удобства выносим деление wibox из rc.lua и добавляем в каждый лэйаут кофигурационный файл и прописываем сам wibox:
- Код: выделить все
-- Widgets that are aligned to the left
bar["left"] = wibox.layout.fixed.horizontal()
bar["left"]:add(compact.left())
--Center
bar["middle"] = wibox.layout.fixed.horizontal()
bar["middle"]:add(compact.middle())
-- Widgets that are aligned to the right
bar["right"] = wibox.layout.fixed.horizontal()
bar["right"]:add(compact.right()) bar["wibox"] = wibox.layout.align.horizontal()
bar["wibox"]:set_left(bar["left"])
bar["wibox"]:set_middle(bar["middle"])
bar["wibox"]:set_right(bar["right"])
bar["main"]:set_widget(bar["wibox"])
Левый 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
Правильный линукс-BSD.