Добавляем боковую(левую) панель в awesome 4.1 (Technologic)



Для получения такого примерно результата необходимо сделать следующее. (все изменения показаны для стандартного rc.lua)

1. Решаем, какая будет ширина панели, у меня ширина панели равна 100, и добавляем строку в theme.lua

 theme.left_panel_width = 100 

т.к. ширина панели потребуется не один раз

2. Сдвигаем верхнюю панель на ширину левой панели. Сразу после строки в rc.lua

 awful.screen.connect_for_each_screen(function(s) 

добавляем следующее

 local dummy = { widget = wibox.widget.textbox }
	local top_panel_left_margin_to_compensate_left_wibox = {{{ dummy,
	bg = beautiful.bg_normal, widget = wibox.container.background },
        width = beautiful.left_panel_width,
        strategy = "exact", layout   = wibox.layout.constraint },
        layout = wibox.layout.fixed.horizontal } 

3. Секцию

 s.mywibox:setup {
        layout = wibox.layout.align.horizontal,
        { -- Left widgets
            layout = wibox.layout.fixed.horizontal,
            mylauncher,
            s.mytaglist,
            s.mypromptbox,
        }, 

приводим к такому виду

 s.mywibox:setup {
        layout = wibox.layout.align.horizontal,
        { -- Left widgets
            layout = wibox.layout.fixed.horizontal,
            top_panel_left_margin_to_compensate_left_wibox,
            mylauncher,
            s.mytaglist,
            s.mypromptbox,
        }, 

4. В секции

 awful.screen.connect_for_each_screen(function(s)
 ...
 ...
 ...
 end) 

5. Выше end) добавляем данные для вывода левой панели

 s.my_left_wibox = awful.wibar({ position = "left", screen = s, width = beautiful.left_panel_width, })

 s.my_left_wibox:setup {
		layout = wibox.layout.align.horizontal,
		{ -- left widgets
			layout = wibox.layout.fixed.vertical,
			-- здесь добавляем необходимые виджеты
		},
	} 
Как сделать сепараторы и виджеты для левой панели, напишу позже

---------------------------------------------------------------------------------------------------------

Для начала создадим папку config в которой будут храниться все созданные виджеты, иначе rc.lua будет расти до бесконечности, у меня сделано так и всё работает не один год

1. В awesome создаём папку config

 mkdir -p ~/.config/awesome/config/ 

2. Помещаем в неё два файла

init.lua



local config = {

    widgets = require("config.widgets"),

return config

widgets.lua


local beautiful  = require("beautiful")
local awful         = require("awful")
local wibox         = require("wibox")
local gears         = require("gears")
local dpi           = beautiful.xresources.apply_dpi
local naughty       = require("naughty")
local timer         = require("gears.timer")
local widget_loader = {}

-- функция загрузки виджетов ===============================================

function widget_loader.init(awesome_context)

    local topwibox = {}

-- сюда помещаем виджеты

  return awesome_context
end

return widget_loader

3. в rc.lua пишем


context = {}

local config = require("config")

config.widgets.init(context)

Перегружаем awesome и теперь можно писать свои виджеты.

Часы на левой панели

В созданном файле wifgets.lua пишем виджет


-- виджет часов
myclock = wibox.widget.textclock("#ffffffdd", "%H:%M")

Если сейчас вписать в rc.lua


 s.my_left_wibox:setup {
		layout = wibox.layout.align.horizontal,
		{ -- left widgets
			layout = wibox.layout.fixed.vertical,
			-- здесь добавляем необходимые виджеты
			myclock,
		},
	}

то часы будут выведены в левом верхнем углу левой панели, для придания более лучшего вида начинаем "украшать" часы.


-- виджет часов
myclock = wibox.widget.textclock(markup.font("sans 14",markup("#ffffffdd", "%H:%M")))
-- помещаем часы в контейнер и задаем отступы left, right, top, bottom
my_cont_clock = wibox.container.margin(myclock, 15, 15, 10, 10)

my_clock = {{{{
        my_cont_clock,
        -- задаём цвет фона
        bg = "#00000045",
        -- помещаем часы в рамку со скругленными углами
        shape         = gears.shape.rounded_rect,
        -- задаем толщину рамки
        shape_border_width  = 2,
        -- задаём цвет рамки
        shape_border_color  = "#aeb5bd85",
        -- виджет вывода рамки
        widget = wibox.container.background },
        -- вкладываем часы в рамку
        layout   = wibox.layout.constraint },
        -- задаем отступы всего виджета
        left = 3, right = 0, top = 8, bottom = 8, widget = wibox.container.margin },
        -- всё запаковываем
        layout = wibox.layout.fixed.horizontal }
-- всплывающая подсказка выводящая день недели, месяц, число, год
myclock_t = awful.tooltip({
	-- привязываем подсказку к часам
    objects = { myclock },
    -- отступы текста подсказки
    margin_leftright    = 15,
    margin_topbottom    = 10,
    -- размещение вне виджета
    mode                = "outside",
    -- время обновления виджета
    timeout             = 2,
    timer_function = function()
            return os.date("Сегодня %A %B %d %Y")
        end,
    })

Вид подсказки задаётся в theme.lua


local beautiful  = require("beautiful")
local awful         = require("awful")
local wibox         = require("wibox")
local gears         = require("gears")
local dpi           = beautiful.xresources.apply_dpi
local naughty       = require("naughty")
local timer         = require("gears.timer")

Вот примерно такое должно появиться после добавления в rc.lua


    s.my_left_wibox:setup {
		layout = wibox.layout.align.horizontal,
		{ -- left widgets
			layout = wibox.layout.fixed.vertical,
                        my_tclock,
		},
	}



Продолжение следует
Кто ищет, тот всегда найдет.
И выглядит стильно, и за описание +100! ;)
Там только в одном месте выделение жирным шрифтом не получилось и оставило ненужные буквы в коде...
Истина где-то рядом...
R.V.
оставило ненужные буквы в коде...
Спасибо, исправил
Кто ищет, тот всегда найдет.
У тебя наверху значок сети это networkmanager??
@Black
У тебя наверху значок сети это networkmanager??
он самый
Кто ищет, тот всегда найдет.
 
Зарегистрироваться или войдите чтобы оставить сообщение.