elenapan/config/awesome/noodle/mpd_buttons.lua
2020-03-23 13:00:28 +02:00

145 lines
4.2 KiB
Lua

-- Text buttons for mpd control using "Material Design Icons" font
local gears = require("gears")
local awful = require("awful")
local wibox = require("wibox")
local helpers = require("helpers")
local mpd_prev_symbol = wibox.widget.textbox()
mpd_prev_symbol.markup = helpers.colorize_text("", x.foreground)
mpd_prev_symbol.font = "Material Icons Bold 18"
mpd_prev_symbol.align = "center"
mpd_prev_symbol.valign = "center"
local mpd_next_symbol = wibox.widget.textbox()
mpd_next_symbol.markup = helpers.colorize_text("", x.foreground)
mpd_next_symbol.font = "Material Icons Bold 18"
mpd_next_symbol.align = "center"
mpd_next_symbol.valign = "center"
local note_symbol = ""
local big_note = wibox.widget.textbox(note_symbol)
big_note.font = "Material Icons Bold 16"
big_note.align = "center"
local small_note = wibox.widget.textbox()
small_note.align = "center"
small_note.markup = helpers.colorize_text(note_symbol, x.foreground)
small_note.font = "Material Icons Bold 11"
-- small_note.valign = "bottom"
local double_note = wibox.widget {
big_note,
-- small_note,
{
small_note,
top = dpi(8),
widget = wibox.container.margin
},
spacing = dpi(-10),
layout = wibox.layout.fixed.horizontal
}
local mpd_toggle_icon = wibox.widget {
double_note,
-- bg = "#00000000",
widget = wibox.container.background
}
mpd_toggle_icon:buttons(gears.table.join(
awful.button({ }, 1, function ()
awful.spawn.with_shell("mpc -q toggle")
end),
awful.button({ }, 3, function ()
awful.spawn.with_shell("mpvc toggle")
end),
awful.button({ }, 8, function ()
sidebar.visible = false
awful.spawn.with_shell("~/scr/Rofi/rofi_mpdtube")
end),
awful.button({ }, 9, function ()
awful.spawn.with_shell("~/scr/info/mpd-query.sh")
end)
))
local mpd_prev_icon = wibox.widget {
mpd_prev_symbol,
shape = gears.shape.circle,
widget = wibox.container.background
}
mpd_prev_icon:buttons(gears.table.join(
awful.button({ }, 1, function ()
awful.spawn.with_shell("mpc -q prev")
end),
awful.button({ }, 3, function ()
awful.spawn.with_shell("mpdc prev")
end)
))
local mpd_next_icon = wibox.widget {
mpd_next_symbol,
shape = gears.shape.circle,
widget = wibox.container.background
}
mpd_next_icon:buttons(gears.table.join(
awful.button({ }, 1, function ()
awful.spawn.with_shell("mpc -q next")
end),
awful.button({ }, 3, function ()
awful.spawn.with_shell("mpdc next")
end)
))
local music_playing_counter = 0
local last_artist
local last_title
local music_playing_colors = {
x.color1,
x.color2,
x.color3,
x.color4,
x.color5,
x.color6,
}
local last_color = music_playing_colors[1]
awesome.connect_signal("evil::mpd", function(artist, title, paused)
local accent, small_note_color
if paused then
accent = x.foreground.."33"
small_note_color = x.foreground.."55"
else
if artist ~= last_artist and title ~= last_title then
accent = music_playing_colors[(music_playing_counter % #music_playing_colors) + 1]
music_playing_counter = music_playing_counter + 1
else
accent = last_color
end
last_artist = artist
last_title = title
last_color = accent
small_note_color = x.foreground
end
big_note.markup = helpers.colorize_text(note_symbol, accent)
small_note.markup = helpers.colorize_text(note_symbol, small_note_color)
-- mpd_prev_icon.bg = accent
-- mpd_next_icon.bg = accent
mpd_prev_symbol.markup = helpers.colorize_text(mpd_prev_symbol.text, accent)
mpd_next_symbol.markup = helpers.colorize_text(mpd_next_symbol.text, accent)
end)
local mpd_buttons = wibox.widget {
nil,
{
mpd_prev_icon,
mpd_toggle_icon,
mpd_next_icon,
spacing = dpi(14),
layout = wibox.layout.fixed.horizontal
},
expand = "none",
layout = wibox.layout.align.horizontal,
}
-- Add clickable mouse effects on some widgets
helpers.add_hover_cursor(mpd_next_icon, "hand1")
helpers.add_hover_cursor(mpd_prev_icon, "hand1")
helpers.add_hover_cursor(mpd_toggle_icon, "hand1")
return mpd_buttons