171 lines
3.8 KiB
Lua
Executable file
171 lines
3.8 KiB
Lua
Executable file
-- # # ######
|
|
-- ## ## # # #### # #### # # #### # #
|
|
-- # # # # # # # # # # # # # # # #
|
|
-- # # # # # #### # # ###### # # ##
|
|
-- # # # # # # # # # # # ##
|
|
-- # # # # # # # # # # # # # # #
|
|
-- # # #### #### # #### ###### #### # #
|
|
|
|
-- 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 |