-- ████████╗ ██████╗ ██████╗ ██████╗ █████╗ ███╗ ██╗███████╗██╗ -- ╚══██╔══╝██╔═══██╗██╔══██╗ ██╔══██╗██╔══██╗████╗ ██║██╔════╝██║ -- ██║ ██║ ██║██████╔╝ ██████╔╝███████║██╔██╗ ██║█████╗ ██║ -- ██║ ██║ ██║██╔═══╝ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║ -- ██║ ╚██████╔╝██║ ██║ ██║ ██║██║ ╚████║███████╗███████╗ -- ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝ -- =================================================================== -- Initialization -- =================================================================== local awful = require("awful") local beautiful = require("beautiful") local wibox = require("wibox") local theme = require("theme") local gears = require("gears") local lain = require("lain") local dpi = beautiful.xresources.apply_dpi local icons = gears.filesystem.get_configuration_dir() .. "/icons/top-panel/" -- import widgets local task_list = require("widgets.task-list") -- define module table local top_panel = {} -- =================================================================== -- Bar Creation -- =================================================================== local updates_indicator = wibox.widget{ { layout = wibox.layout.fixed.horizontal, { { widget = awful.widget.watch('bash -c "checkupdates | wc -l"', 360), }, top = 4, bottom = 4, left = 10, right = 10, widget = wibox.container.margin }, wibox.widget.textbox(' Updates '), }, widget = wibox.container.background } top_panel.create = function(s) local panel = awful.wibar({ screen = s, position = "top", ontop = true, height = beautiful.top_panel_height, width = s.geometry.width, bg = beautiful.bg_normal .. "99" }) panel:setup { expand = "none", layout = wibox.layout.align.horizontal, task_list.create(s), wibox.widget.textclock('%a %b %d, %H:%M:%S', 1), { layout = wibox.layout.fixed.horizontal, wibox.layout.margin(wibox.widget.systray(), dpi(5), dpi(5), dpi(5), dpi(5)), updates_indicator, wibox.widget.textbox(' | '), lain.widget.mem({ settings = function() widget:set_markup(lain.util.markup.font(theme.font, " " .. mem_now.used .. " MB ")) end, }), wibox.widget.textbox(' | '), lain.widget.cpu({ settings = function() widget:set_markup(lain.util.markup.font(theme.font, " " .. cpu_now.usage .. "% ")) end, }), wibox.widget.textbox(' | '), awful.widget.watch('bash -c "sensors | grep Tctl | cut -f 10 -d \' \' | cut -c 2-"', 5), wibox.widget.textbox(' | '), wibox.layout.margin(require("widgets.layout-box"), dpi(5), dpi(5), dpi(5), dpi(5)), wibox.widget.textbox(' '), } } -- =================================================================== -- Functionality -- =================================================================== -- hide panel when client is fullscreen local function change_panel_visibility(client) if client.screen == s then panel.ontop = not client.fullscreen end end -- connect panel visibility function to relevant signals client.connect_signal("property::fullscreen", change_panel_visibility) client.connect_signal("focus", change_panel_visibility) updates_indicator:connect_signal("button::press", function(c, _, _, button) awful.spawn('kitty --single-instance -e bash -c "yay ; echo \'\nDone, press any key to exit...\' ; read"') end) updates_indicator:connect_signal("mouse::enter", function(c) c:set_bg(theme.bg_normal .. "99") end) updates_indicator:connect_signal("mouse::leave", function(c) c:set_bg(theme.bg_normal .. "20") end) end return top_panel