179 lines
3.8 KiB
Lua
179 lines
3.8 KiB
Lua
local awful = require("awful")
|
|
local wibox = require("wibox")
|
|
local gears = require("gears")
|
|
local beautiful = require("beautiful")
|
|
local helpers = require("helpers")
|
|
local config = require("config")
|
|
|
|
local theme = beautiful.get()
|
|
local dpi = beautiful.xresources.apply_dpi
|
|
|
|
local os_user = os.getenv("USER")
|
|
|
|
if not os_user then
|
|
os_user = "user"
|
|
end
|
|
|
|
-- Create Widgets
|
|
-------------------
|
|
|
|
-- Pfp
|
|
local pfp = wibox.widget.imagebox()
|
|
pfp.image = require("config").theme.pfp
|
|
pfp.clip_shape = gears.shape.circle
|
|
pfp.forced_width = dpi(130)
|
|
pfp.forced_height = dpi(130)
|
|
|
|
-- User
|
|
local user = wibox.widget.textbox()
|
|
user.font = helpers.ui.set_font("SemiBold 18")
|
|
user.halign = "left"
|
|
user.markup = helpers.ui.colorize_text(os_user, theme.fg_normal)
|
|
|
|
-- Hostname
|
|
local hostname = wibox.widget.textbox()
|
|
hostname.font = helpers.ui.set_font("Regular 14")
|
|
hostname.halign = "left"
|
|
|
|
awful.spawn.easy_async_with_shell("hostnamectl --static", function(stdout)
|
|
hostname.markup = helpers.ui.colorize_text("@" .. tostring(stdout), theme.color.lavender)
|
|
end)
|
|
|
|
-- Battery
|
|
local uptimeosd = wibox.widget.textbox()
|
|
uptimeosd.font = helpers.ui.set_font("12")
|
|
uptimeosd.halign = "center"
|
|
|
|
-- Get data 4 widgets!
|
|
awesome.connect_signal("signal::uptime", function(uptime)
|
|
uptimeosd.markup = helpers.ui.colorize_text("up " .. uptime, theme.fg_normal)
|
|
end)
|
|
|
|
-- Spacing horizontally
|
|
local shutdown = wibox.widget({
|
|
{
|
|
{
|
|
font = helpers.ui.set_font("30"),
|
|
markup = helpers.ui.colorize_text(config.icons.power, theme.color.red),
|
|
halign = "center",
|
|
valign = "center",
|
|
widget = wibox.widget.textbox,
|
|
},
|
|
top = dpi(9),
|
|
bottom = dpi(9),
|
|
left = dpi(11),
|
|
right = dpi(11),
|
|
widget = wibox.container.margin,
|
|
},
|
|
bg = theme.color.surface1,
|
|
shape = helpers.ui.rrect(8),
|
|
widget = wibox.container.background,
|
|
})
|
|
|
|
local reboot = wibox.widget({
|
|
{
|
|
{
|
|
font = helpers.ui.set_font("30"),
|
|
markup = helpers.ui.colorize_text(config.icons.restart, theme.color.blue),
|
|
halign = "center",
|
|
valign = "center",
|
|
widget = wibox.widget.textbox,
|
|
},
|
|
top = dpi(9),
|
|
bottom = dpi(9),
|
|
left = dpi(11),
|
|
right = dpi(11),
|
|
widget = wibox.container.margin,
|
|
},
|
|
bg = theme.color.surface1,
|
|
shape = helpers.ui.rrect(8),
|
|
widget = wibox.container.background,
|
|
})
|
|
shutdown:connect_signal("mouse::enter", function()
|
|
shutdown.bg = theme.color.surface2
|
|
end)
|
|
|
|
shutdown:connect_signal("mouse::leave", function()
|
|
shutdown.bg = theme.color.surface1
|
|
end)
|
|
|
|
reboot:connect_signal("mouse::enter", function()
|
|
reboot.bg = theme.color.surface2
|
|
end)
|
|
|
|
reboot:connect_signal("mouse::leave", function()
|
|
reboot.bg = theme.color.surface1
|
|
end)
|
|
|
|
shutdown:buttons(gears.table.join(awful.button({}, 1, function()
|
|
awesome.emit_signal("module::exit_screen:show")
|
|
end)))
|
|
|
|
reboot:buttons(gears.table.join(awful.button({}, 1, function()
|
|
awful.spawn.with_shell("loginctl reboot")
|
|
end)))
|
|
|
|
-- Grouping widgets
|
|
---------------------
|
|
local buttons = wibox.widget({
|
|
{
|
|
reboot,
|
|
shutdown,
|
|
spacing = dpi(8),
|
|
layout = wibox.layout.fixed.horizontal,
|
|
},
|
|
top = dpi(10),
|
|
left = dpi(57),
|
|
widget = wibox.container.margin,
|
|
})
|
|
|
|
local name = wibox.widget({
|
|
{
|
|
user,
|
|
hostname,
|
|
spacing = dpi(4),
|
|
layout = wibox.layout.fixed.vertical,
|
|
},
|
|
left = 0,
|
|
widget = wibox.container.margin,
|
|
})
|
|
|
|
local uptimebox = wibox.widget({
|
|
{
|
|
{
|
|
uptimeosd,
|
|
spacing = dpi(2),
|
|
layout = wibox.layout.fixed.vertical,
|
|
},
|
|
top = dpi(3),
|
|
bottom = dpi(3),
|
|
widget = wibox.container.margin,
|
|
},
|
|
bg = theme.color.surface0,
|
|
shape = helpers.ui.rrect(7),
|
|
widget = wibox.container.background,
|
|
})
|
|
|
|
-- The Profile Widget
|
|
return wibox.widget({
|
|
{
|
|
{
|
|
pfp,
|
|
uptimebox,
|
|
spacing = dpi(20),
|
|
layout = wibox.layout.fixed.vertical,
|
|
},
|
|
layout = wibox.layout.fixed.vertical,
|
|
},
|
|
{
|
|
{
|
|
name,
|
|
buttons,
|
|
layout = wibox.layout.fixed.vertical,
|
|
},
|
|
top = dpi(30),
|
|
layout = wibox.container.margin,
|
|
},
|
|
spacing = dpi(30),
|
|
layout = wibox.layout.fixed.horizontal,
|
|
})
|