diff options
Diffstat (limited to 'roles/home/desktop/eww/panels/music.yuck')
| -rw-r--r-- | roles/home/desktop/eww/panels/music.yuck | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/roles/home/desktop/eww/panels/music.yuck b/roles/home/desktop/eww/panels/music.yuck new file mode 100644 index 0000000..757efd5 --- /dev/null +++ b/roles/home/desktop/eww/panels/music.yuck @@ -0,0 +1,102 @@ + +(defwidget music [] + (box :class "panel music" + :orientation "h" + :spacing 8 + :space-evenly false + :height {128 + 16 + 4} + + (image + :path song-cover + :image-width 128 + :image-height 128 + ) + + (box :class "right" + :orientation "v" + :spacing 0 + :space-evenly true + :hexpand true + + (box :class "info" + :orientation "v" + :space-evenly false + :valign "center" + + (tooltip {song.title} + (label :class "song-title" + :text {song.title} + :halign "start" + :truncate true + ) + ) + (tooltip {song.album} + (label :class "song-album" + :text {song.album} + :halign "start" + :truncate true + ) + ) + (tooltip {song.artist} + (label :class "song-artist" + :text {song.artist} + :halign "start" + :truncate true + ) + ) + ) + + (box + :valign "end" + :space-evenly false + + (box :class "control" + :space-evenly false + + (button :class "icon" + :width 36 + :onclick `playerctl --player=cmus,firefox,%any previous` + + "" + ) + (button :class "icon" + :onclick `playerctl --player=cmus,firefox,%any play-pause` + :width 36 + + { song.status == "Playing" ? "" : "" } + ) + (button :class "icon" + :width 36 + :onclick `playerctl --player=cmus,firefox,%any next` + + "" + ) + ) + + (scale + :hexpand true + :value {song-position} + :max {song.length/1000/1000} + ;:onchange `/home/c/seek.sh {}` + ) + + {formattime(round(song-position, 0), "%M:%S") + " / " + formattime(round(song.length/1000/1000, 0), "%M:%S")} + + (box :width 16) + ) + ) + ) +) + +(deflisten song-cover + `playerctl --player=cmus,firefox,%any -F metadata title | get-album-art` +) + +(deflisten song + `playerctl --player=cmus,firefox,%any -F metadata --format='{"title": "{{title}}", "album": "{{album}}", "artist": "{{artist}}", "status": "{{status}}", "length": "{{mpris:length}}"}'` +) + +(defpoll song-position + :interval "0.2s" + `playerctl --player=cmus,firefox,%any position` +)
\ No newline at end of file |