summary refs log tree commit diff
path: root/.config/waybar/modules/mpris.awk
diff options
context:
space:
mode:
Diffstat (limited to '.config/waybar/modules/mpris.awk')
-rw-r--r--.config/waybar/modules/mpris.awk57
1 files changed, 57 insertions, 0 deletions
diff --git a/.config/waybar/modules/mpris.awk b/.config/waybar/modules/mpris.awk
new file mode 100644
index 0000000..af3a271
--- /dev/null
+++ b/.config/waybar/modules/mpris.awk
@@ -0,0 +1,57 @@
+BEGIN {
+  # system("jq -Mnc {}");
+}
+
+{
+  gsub(/"/,"")
+  gsub(/'/,"\047")
+  # print "DEBUG: " $0
+
+  artist=$1
+  album=$2
+  title=$3
+  position=$4
+  player=$5
+  status=$6
+}
+
+($0 == "") || (status ~ /stopped/) {
+  system("jq -Mnc {}")
+  exit
+}
+(status ~ /playing/) {
+  icon="󰲸"
+}
+(status ~ /paused/) {
+  icon="󰏤"
+}
+(artist != "") && (album != "") {
+  text=sprintf("%s - %s - %s (%s)", artist, album, title, position)
+  tooltip=sprintf("%s\nby %s\nfrom %s\n(%s)", title, artist, album, player)
+}
+(artist == "") {
+  text=sprintf("%s - %s (%s)", album, title, position)
+  tooltip=sprintf("%s\nfrom %s\n(%s)", title, album, player)
+}
+(album == "") {
+  text=sprintf("%s - %s (%s)", artist, title, position)
+  tooltip=sprintf("%s\nby %s\n(%s)", title, artist, player)
+}
+(artist == "") && (album == "") {
+  text=sprintf("%s (%s)", title, position)
+  tooltip=sprintf("%s\n(%s)", title, player)
+}
+# edge cases to beautify the output
+(player == "tdesktop") && (title ~ /Unknown Track/) {
+  text="telegram voice message"
+}
+
+{
+  system(sprintf("jq -rMnc --arg class \"%s\" --arg text \"%s %s\" --arg tt \"%s\" '{ class: $class, text: $text|@html, tooltip: $tt|@html }'", \
+         status,
+         icon,
+         text,
+         tooltip))
+}
+
+END {}