diff --git a/README.md b/README.md index fb16d93..ccc04b3 100644 --- a/README.md +++ b/README.md @@ -224,11 +224,10 @@ To enable: `bling.signal.playerctl.enable()` ```lua -- bling::playerctl::status -- first line is the signal -- playing (boolean) -- indented lines are function parameters --- bling::playerctl::album --- album_art (string) --- bling::playerctl::title_artist +-- bling::playerctl::title_artist_album -- title (string) -- artist (string) +-- album_path (string) -- bling::playerctl::position -- interval_sec (number) -- length_sec (number) @@ -236,7 +235,6 @@ To enable: `bling.signal.playerctl.enable()` ###### Example Implementation -Lets say we have an imagebox. If I wanted to set the imagebox to show the album art, all I have to do is this: ```lua local art = wibox.widget { image = "default_image.png", @@ -246,11 +244,40 @@ local art = wibox.widget { widget = wibox.widget.imagebox } -awesome.connect_signal("bling::playerctl::album", function(path) - art:set_image(gears.surface.load_uncached(path)) +local title_widget = wibox.widget { + markup = 'Nothing Playing', + align = 'center', + valign = 'center', + widget = wibox.widget.textbox +} + +local artist_widget = wibox.widget { + markup = 'Nothing Playing', + align = 'center', + valign = 'center', + widget = wibox.widget.textbox +} + +-- Get Song Info +awesome.connect_signal("bling::playerctl::title_artist_album", + function(title, artist, art_path) + -- Set art widget + art:set_image(gears.surface.load_uncached(art_path)) + + local my_title = "No Title" + local my_artist = "No Artist" + + if title then + my_title = title + my_artist = artist + end + + -- Set title and artist widgets + title_widget:set_markup_silently(my_title) + artist_widget:set_markup_silently(my_artist) end) ``` -Thats all! You don't even have to worry about updating the imagebox, the signals will handle that for you. +Thats all! You don't even have to worry about updating the widgets, the signals will handle that for you. diff --git a/signal/playerctl.lua b/signal/playerctl.lua index 9719130..4adb08b 100644 --- a/signal/playerctl.lua +++ b/signal/playerctl.lua @@ -1,11 +1,10 @@ -- Provides: -- bling::playerctl::status -- playing (boolean) --- bling::playerctl::album --- album_art (string) --- bling::playerctl::title_artist +-- bling::playerctl::title_artist_album -- title (string) -- artist (string) +-- album_path (string) -- bling::playerctl::position -- interval_sec (number) -- length_sec (number) @@ -86,18 +85,16 @@ echo "$tmp_cover_path" function() awful.spawn.with_line_callback(song_follow_cmd, { stdout = function(line) - -- Get Album Art awful.spawn.easy_async_with_shell(art_script, function(out) + -- Get album path local album_path = out:gsub('%\n', '') - awesome.emit_signal("bling::playerctl::album", - album_path) + -- Get Title and Artist + local artist = line:match('artist_(.*)title_') + local title = line:match('title_(.*)') + awesome.emit_signal( + "bling::playerctl::title_artist_album", title, + artist, album_path) end) - - -- Get Title and Artist - local artist = line:match('artist_(.*)title_') - local title = line:match('title_(.*)') - awesome.emit_signal("bling::playerctl::title_artist", title, - artist) end }) end)