awesome/layout/top-bar.lua

166 lines
5.5 KiB
Lua

local awful = require('awful')
local beautiful = require('beautiful')
local clickable_container = require('widget.material.clickable-container')
local mat_icon_button = require('widget.material.icon-button')
local wibox = require('wibox')
local TagList = require('widget.tag-list')
local gears = require('gears')
local dpi = require('beautiful').xresources.apply_dpi
local theme = require "theme"
local table = awful.util.table or gears.table
local separator = wibox.container.margin(wibox.widget {
orientation = 'vertical',
forced_width = dpi(1),
opacity = 0.3,
widget = wibox.widget.separator
}, dpi(0), dpi(0), dpi(4), dpi(4))
local TopBar = function(s, offset)
-- LAYOUT BOX
-- ==========
local function update_txt_layoutbox(s)
-- Writes a string representation of the current layout in a textbox widget
local txt_l = theme["layout_txt_" .. awful.layout.getname(awful.layout.get(s))] or ""
s.layoutbox:set_text(txt_l)
end
s.layoutbox = wibox.widget.textbox(theme["layout_txt_" .. awful.layout.getname(awful.layout.get(s))])
s.layoutbox.font = beautiful.icon_font
awful.tag.attached_connect_signal(s, "property::selected", function () update_txt_layoutbox(s) end)
awful.tag.attached_connect_signal(s, "property::layout", function () update_txt_layoutbox(s) end)
s.layoutbox:buttons(table.join(
awful.button({}, 1, function() awful.layout.inc(1) end),
awful.button({}, 2, function () awful.layout.set( awful.layout.layouts[1] ) end),
awful.button({}, 3, function() awful.layout.inc(-1) end),
awful.button({}, 4, function() awful.layout.inc(1) end),
awful.button({}, 5, function() awful.layout.inc(-1) end)))
-- SYSTEM TRAY
-- ===========
local systray = wibox.widget.systray()
systray:set_horizontal(true)
-- SYSTEM DETAILS
-- ==============
local volume_widget = require('widget.volume')
local battery_widget = require('widget.battery')
local clock_widget = require('widget.clock')
local mem_widget = require('widget.memory')
local cpu_widget = require('widget.cpu')
local temprature_widget = require('widget.temprature')
local storage_widget = require('widget.storage')
local system_details = wibox.widget {
systray,
separator,
battery,
--separator,
wibox.widget{
wibox.widget{
text = 'mem',
font = beautiful.icon_font,
widget = wibox.widget.textbox
},
fg = beautiful.accent.hue_600,
widget = wibox.container.background
},
mem_widget,
separator,
wibox.widget{
wibox.widget{
text = 'cpu',
font = beautiful.icon_font,
widget = wibox.widget.textbox
},
fg = beautiful.accent.hue_500,
widget = wibox.container.background
},
cpu_widget,
separator,
wibox.widget{
wibox.widget{
text = 'temp',
font = beautiful.icon_font,
widget = wibox.widget.textbox
},
fg = beautiful.accent.hue_400,
widget = wibox.container.background
},
temprature_widget,
separator,
wibox.widget{
wibox.widget{
text = 'disk',
font = beautiful.icon_font,
widget = wibox.widget.textbox
},
fg = beautiful.accent.hue_200,
widget = wibox.container.background
},
storage_widget,
separator,
wibox.widget{
wibox.widget{
text = 'vol',
font = beautiful.icon_font,
widget = wibox.widget.textbox
},
fg = beautiful.accent.hue_500,
widget = wibox.container.background
},
volume_widget,
separator,
wibox.widget{
wibox.widget{
text = 'date',
font = beautiful.icon_font,
widget = wibox.widget.textbox
},
fg = beautiful.accent.hue_400,
widget = wibox.container.background
},
clock_widget,
wibox.widget{
s.layoutbox,
fg = beautiful.primary.hue_100,
bg = beautiful.accent.hue_200,
widget = wibox.container.background
},
spacing = dpi(4),
layout = wibox.layout.fixed.horizontal
}
local calendar = require('widget.calendar')
calendar:attach(clock_widget)
-- TOP BAR
-- =======
local panel = wibox({
ontop = false,
screen = s,
height = dpi(20),
width = s.geometry.width,
x = s.geometry.x,
y = s.geometry.y,
stretch = false,
bg = beautiful.primary.hue_100,
fg = beautiful.fg_normal,
})
panel:struts({
top = panel.height - panel.y
})
panel:setup{
layout = wibox.layout.align.horizontal,
TagList(s),
nil,
system_details,
}
return panel
end
return TopBar