local qnative = require "quarrel.native" local qui = require "quarrel.ui" local qvars = require "quarrel.vars" local wibox = require "wibox" local default_text = "Nothing playing" local w_title = wibox.widget { widget = wibox.widget.textbox, text = "Nothing playing", } local w_artist = wibox.widget { widget = wibox.container.background, fg = qvars.colors.dim.fg, { widget = wibox.widget.textbox, text = "", }, } local w_progress_bar = wibox.widget { widget = wibox.widget.progressbar, max_value = 0, value = 0, forced_height = qvars.char_height / 2, forced_width = qvars.expanded_bar_size - (qvars.big_padding + qvars.big_padding * 2 + qvars.padding * 2) - (qvars.char_height / 1.25 + qvars.padding) * 3, color = qvars.colors.yellow, background_color = qvars.colors.black, shape = qvars.shape, } local music = wibox.widget(qui.styled { widget = wibox.container.background, { widget = wibox.container.margin, margins = qvars.big_padding, { { { widget = wibox.container.background, bg = qvars.colors.bg, shape = qvars.shape, { widget = wibox.container.margin, margins = qvars.padding, { { widget = wibox.container.constraint, width = qvars.expanded_bar_size - (qvars.big_padding + qvars.big_padding * 2 + qvars.padding * 2), height = qvars.char_height, { widget = wibox.container.scroll.horizontal, speed = 50, step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth, w_title, }, }, { widget = wibox.container.constraint, width = qvars.expanded_bar_size - (qvars.big_padding + qvars.big_padding * 2 + qvars.padding * 2), height = qvars.char_height, { widget = wibox.container.scroll.horizontal, speed = 50, step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth, w_artist, }, }, layout = wibox.layout.fixed.vertical, }, }, }, nil, nil, layout = wibox.layout.align.horizontal, }, nil, { widget = wibox.container.background, bg = qvars.colors.bg, shape = qvars.shape, w_progress_bar, }, layout = wibox.layout.align.vertical, }, }, }) awesome.connect_signal("services::playerctl::metadata", function(title, artist, album_path) w_title.text = title ~= "" and qnative.util.decode_html(title) or default_text w_artist.widget.text = qnative.util.decode_html(artist) end) awesome.connect_signal("services::playerctl::position", function(position, length) w_progress_bar.value = position w_progress_bar.max_value = length end) awesome.connect_signal("services::playerctl::no_players", function() w_title.text = default_text w_artist.text = "" w_progress_bar.value = 0 w_progress_bar.max_value = 0 end) return music