-- # # ###### -- ## ## # # #### # #### # # #### # # -- # # # # # # # # # # # # # # # # -- # # # # # #### # # ###### # # ## -- # # # # # # # # # # # ## -- # # # # # # # # # # # # # # # -- # # #### #### # #### ###### #### # # -- Creates the music box widget here local awful = require('awful') local wibox = require('wibox') local gears = require('gears') local beautiful = require('beautiful') local dpi = beautiful.xresources.apply_dpi local music_func = {} screen.connect_signal("request::desktop_decoration", function(s) -- Set music box geometry local music_box_margin = dpi(5) local music_box_height = dpi(375) local music_box_width = dpi(260) local music_box_x = nil s.musicpop = awful.popup { widget = { -- Removing this block will cause an error... }, ontop = true, visible = false, type = 'dock', screen = s, width = music_box_width, height = music_box_height, maximum_width = music_box_width, maximum_height = music_box_height, offset = dpi(5), shape = gears.shape.rectangle, bg = beautiful.transparent, preferred_anchors = {'middle', 'back', 'front'}, preferred_positions = {'left', 'right', 'top', 'bottom'}, } local ui_content = require('widget.music.content') s.album = ui_content.album_cover s.progress_bar = ui_content.progress_bar s.time_track = ui_content.track_time.time_track s.song_info = ui_content.song_info.music_info s.media_buttons = ui_content.media_buttons.navigate_buttons s.volume_slider = ui_content.volume_slider.vol_slider s.musicpop : setup { { { layout = wibox.layout.fixed.vertical, expand = 'none', spacing = dpi(8), { s.album, bottom = dpi(5), widget = wibox.container.margin, }, { layout = wibox.layout.fixed.vertical, { spacing = dpi(4), layout = wibox.layout.fixed.vertical, s.progress_bar, s.time_track, }, s.song_info, s.media_buttons, s.volume_slider, }, }, top = dpi(15), left = dpi(15), right = dpi(15), widget = wibox.container.margin }, bg = beautiful.background, shape = function(cr, width, height) gears.shape.partially_rounded_rect( cr, width, height, true, true, true, true, beautiful.groups_radius ) end, widget = wibox.container.background() } s.backdrop_music = wibox { ontop = true, visible = false, screen = s, type = 'utility', input_passthrough = false, bg = beautiful.transparent, x = s.geometry.x, y = s.geometry.y, width = s.geometry.width, height = s.geometry.height } local toggle_music_box = function(type) local focused = awful.screen.focused() local music_box = focused.musicpop local music_backdrop = focused.backdrop_music if music_box.visible then music_backdrop.visible = not music_backdrop.visible music_box.visible = not music_box.visible else if type == 'keyboard' then music_backdrop.visible = true music_box.visible = true awful.placement.top_right(music_box, { margins = { top = dpi(5), right = dpi(music_box_x or 5) }, honor_workarea = true }) else local widget_button = mouse.current_widget_geometry music_backdrop.visible = true music_box:move_next_to(widget_button) music_box_x = (focused.geometry.width - music_box.x) - music_box_width end end end awesome.connect_signal( 'widget::music', function(type) toggle_music_box(type) end ) s.backdrop_music:buttons( awful.util.table.join( awful.button( {}, 1, nil, function() toggle_music_box() end ) ) ) end) music_func.toggle_music_box = toggle_music_box local mpd_updater = require('widget.music.mpd-music-updater') return music_func