From 972bff32235bbd414cbbaba5ac3eeb7979c2bad6 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Sat, 30 Sep 2023 19:20:48 -0400 Subject: add mpd widget; better borders --- modules/desktop/awesome/rc.lua | 35 +++++++++++++- modules/desktop/awesome/theme.lua | 6 +-- modules/desktop/awesome/widgets/mpd.lua | 86 +++++++++++++++++++++++++++++++++ 3 files changed, 122 insertions(+), 5 deletions(-) create mode 100644 modules/desktop/awesome/widgets/mpd.lua diff --git a/modules/desktop/awesome/rc.lua b/modules/desktop/awesome/rc.lua index 1fb1ea5..41728fa 100644 --- a/modules/desktop/awesome/rc.lua +++ b/modules/desktop/awesome/rc.lua @@ -143,6 +143,9 @@ local topcalendar = calendar_widget() local volume_widget = require("widgets.volume") local volumebar = volume_widget() +local mpd_widget = require("widgets.mpd") +local mpdbar = mpd_widget() + toptextclock:connect_signal("button::press", function(_, _, _, button) if button == 1 then topcalendar.toggle() end @@ -344,6 +347,22 @@ awful.screen.connect_for_each_screen(function(s) end) -- }}} +local mpd_dock = wibox { + visible = true, + ontop = false, + height = 24, + width = 300, + bg = "00000000" +} + +mpd_dock:setup { + mpdbar, + halign = "center", + layout = wibox.container.place +} + +awful.placement.top_right(mpd_dock, { margins = { top = 42, right = 8 }, parent = awful.screen.focused() }) + -- {{{ Mouse bindings root.buttons(gears.table.join( awful.button({ }, 3, function () mymainmenu:toggle() end), @@ -657,7 +676,16 @@ client.connect_signal("request::titlebars", function(c) end) ) - awful.titlebar(c, {size = dpi(20), position = "left"}) : setup { + awful.titlebar(c, {size = dpi(6), position = "top"}) : setup { + layout = wibox.layout.align.horizontal + } + awful.titlebar(c, {size = dpi(6), position = "bottom"}) : setup { + layout = wibox.layout.align.horizontal + } + awful.titlebar(c, {size = dpi(6), position = "right"}) : setup { + layout = wibox.layout.align.vertical + } + awful.titlebar(c, {size = dpi(26), position = "left"}) : setup { { -- Left awful.titlebar.widget.iconwidget(c), widget = wibox.container.margin, @@ -681,29 +709,32 @@ client.connect_signal("request::titlebars", function(c) widget = awful.titlebar.widget.maximizedbutton(c), }, widget = wibox.container.background, + ontop = true, shape = gears.shape.circle, shape_border_width = 1, shape_border_color = "#12ac28", bg = "#28c940", forced_height = dpi(14), + forced_width = dpi(14), }, { { widget = awful.titlebar.widget.closebutton(c), }, widget = wibox.container.background, + ontop = true, shape = gears.shape.circle, shape_border_width = 1, shape_border_color = "#ad3934", bg = "#bf4943", forced_height = dpi(14), + forced_width = dpi(14), }, spacing = dpi(6), layout = wibox.layout.fixed.vertical }, widget = wibox.container.margin; top = dpi(6); - bottom = dpi(6); }, layout = wibox.layout.align.vertical } diff --git a/modules/desktop/awesome/theme.lua b/modules/desktop/awesome/theme.lua index 1568b5a..18be5db 100644 --- a/modules/desktop/awesome/theme.lua +++ b/modules/desktop/awesome/theme.lua @@ -30,10 +30,10 @@ theme.tag_list_focused = "#cdd6f4" theme.tag_list_urgent = "#f38ba8" theme.useless_gap = dpi(4) -theme.border_width = 0 +theme.border_width = dpi(0) theme.border_normal = theme.bg_normal -theme.border_focus = theme.bg_focus -theme.border_marked = theme.fg_focus .. "88" +theme.border_focus = theme.bg_normal +theme.border_marked = theme.bg_normal -- There are other variable sets -- overriding the default one when diff --git a/modules/desktop/awesome/widgets/mpd.lua b/modules/desktop/awesome/widgets/mpd.lua new file mode 100644 index 0000000..d588089 --- /dev/null +++ b/modules/desktop/awesome/widgets/mpd.lua @@ -0,0 +1,86 @@ +local awful = require("awful") +local spawn = require("awful.spawn") +local watch = require("awful.widget.watch") +local beautiful = require("beautiful") +local wibox = require("wibox") +local gears = require("gears") +local naughty = require("naughty") + +local mpd_widget = {} + +local MUSIC_ICON = ' ' +local OFF_ICON = '󰝛 ' + +local PLAY_ICON = ' ' +local PAUSE_ICON = ' ' + +local PREV_ICON = ' ' +local NEXT_ICON = ' ' + +local function worker(user_args) + local mpd_bar = wibox.widget { + { + id = "progress", + widget = wibox.widget.progressbar, + max_value = 1, + forced_height = 12, + forced_width = 150, + border_width = 0, + color = beautiful.bg_focus, + background_color = beautiful.bg_normal, + }, + { + id = "title", + widget = wibox.widget.textbox, + text = "NO SONG", + valign = "center", + halign = "center", + }, + layout = wibox.layout.stack + } + + local status_icon = wibox.widget { + id = "status", + widget = wibox.widget.textbox, + text = PLAY_ICON + } + + local update = function(widget, stdout, _, _, _) + local current_song = string.gmatch(stdout, "[^\r\n]+")() + stdout = string.gsub(stdout, "\n", "") + local mpd_percent = string.match(stdout, "(%d%d)%%") + local mpd_status = string.match(stdout, "%[(%a+)%]") + + widget:get_children_by_id("title")[1].text = current_song + widget:get_children_by_id("progress")[1].value = tonumber(mpd_percent)/100 + + if mpd_status == "playing" then + status_icon.text = PLAY_ICON + elseif mpd_status == "paused" then + status_icon.text = PAUSE_ICON + end + end + + mpd_bar:connect_signal("button::press", function(_, _, _, button) + if button == 1 then awful.spawn("mpc toggle", false) + elseif button == 3 then awful.spawn("kitty -e ncmpcpp", false) + elseif button == 4 then awful.spawn("mpc next", false) + elseif button == 5 then awful.spawn("mpc prev", false) + end + end) + + watch("mpc status", 1, update, mpd_bar) + + mpd_widget = wibox.widget { + status_icon, + mpd_bar, + layout = wibox.layout.align.horizontal, + spacing = 8, + } + + return mpd_widget +end + +return setmetatable(mpd_widget, { __call = function(_, ...) + return worker(...) +end}) -- cgit v1.2.1