i3blocks: use ruby for strawberry current song

When using shellscript for dbus properties, I parsed the output
manually. It was not really good and special characters were not
displayed correctly.
This commit is contained in:
Guillaume Dott 2026-09-04 11:10:56 +02:00
parent e3f59f7cad
commit a5a42bffb8
2 changed files with 33 additions and 1 deletions

View File

@ -0,0 +1,32 @@
#!/usr/bin/env ruby
require "dbus"
def seconds_to_ms(sec)
sec /= 1000000
"%02d:%02d" % [sec / 60, sec % 60]
end
service = DBus.session_bus["org.mpris.MediaPlayer2.strawberry"]
unless service.exists?
puts 'Strawberry not running'
exit 1
end
object = service["/org/mpris/MediaPlayer2"]
interface = object["org.mpris.MediaPlayer2.Player"]
metadata = interface["Metadata"]
if metadata.empty?
puts 'No song in playlist'
exit 2
end
position = interface["Position"]
playback_status = interface["PlaybackStatus"]
printf "(#{playback_status}) " if playback_status != 'Playing'
puts "#{metadata['xesam:albumArtist'].join(', ')} - #{metadata['xesam:album']} - #{metadata['xesam:title']} " \
"(#{metadata['xesam:trackNumber']}) [#{seconds_to_ms(position)} / #{seconds_to_ms(metadata['mpris:length'])}]"

View File

@ -3,7 +3,7 @@ separator_block_width=10
markup=none
[mpc]
command=./blocks/strawberry.sh
command=./blocks/strawberry-current.rb
interval=5
signal=12