From f95a9948a6f1483466d8e2919e4b303c34e82d98 Mon Sep 17 00:00:00 2001 From: marc Date: Tue, 21 Nov 2023 13:53:13 +0100 Subject: [PATCH] Added ICE polybar module --- config/polybar/bars/bars.ini | 2 +- config/polybar/bars/colours.ini | 4 ++++ config/polybar/bars/modules/ice.ini | 8 +++++++ config/polybar/scripts/ice.sh | 33 +++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 config/polybar/bars/modules/ice.ini create mode 100755 config/polybar/scripts/ice.sh diff --git a/config/polybar/bars/bars.ini b/config/polybar/bars/bars.ini index 6ba179d..f84f8af 100644 --- a/config/polybar/bars/bars.ini +++ b/config/polybar/bars/bars.ini @@ -51,4 +51,4 @@ bottom = false modules-left = spotify modules-center = date -modules-right = i3-mode +modules-right = ice i3-mode diff --git a/config/polybar/bars/colours.ini b/config/polybar/bars/colours.ini index 90b9bfd..0e011ed 100644 --- a/config/polybar/bars/colours.ini +++ b/config/polybar/bars/colours.ini @@ -55,3 +55,7 @@ fg = ${colour-scheme.base0C} [colours/spotify] bg = ${colour-scheme.base00} fg = ${colour-scheme.base0A} + +[colours/ice] +bg = ${colour-scheme.base00} +fg = ${colour-scheme.base0A} diff --git a/config/polybar/bars/modules/ice.ini b/config/polybar/bars/modules/ice.ini new file mode 100644 index 0000000..8daf4aa --- /dev/null +++ b/config/polybar/bars/modules/ice.ini @@ -0,0 +1,8 @@ +[module/ice] +type = custom/script +exec = ~/.config/polybar/scripts/ice.sh +interval = 5 + +format-background = ${colours/ice.bg} +format-foreground = ${colours/ice.fg} +format-padding = 1 diff --git a/config/polybar/scripts/ice.sh b/config/polybar/scripts/ice.sh new file mode 100755 index 0000000..953e6eb --- /dev/null +++ b/config/polybar/scripts/ice.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Show current train speed on ICE + +main() { + status=$(curl -X GET https://iceportal.de/api1/rs/status 2>/dev/null) + tripInfo=$(curl -X GET https://iceportal.de/api1/rs/tripInfo/trip 2>/dev/null) + + if [[ -z $status || -z $tripInfo ]]; then + return + fi + + # Speed + speed=$(echo $status | jq ".speed") + + # Next stop + nextId=$(echo $tripInfo | jq ".trip.stopInfo.actualNext") + nextStop=$(echo $tripInfo | jq ".trip.stops[] | select( .station.evaNr == $nextId )") + + nextStopName=$(echo $nextStop | jq -r ".station.name") + nextStopArrival=$(echo $nextStop | jq ".timetable.actualArrivalTime") + + nextStopRemainingSeconds=$(expr $(expr $nextStopArrival / 1000) - $(date +%s)) + + if [[ ${nextStopRemainingSeconds:0:1} == "-" ]]; then + nextStopRemainingTime="Arribada!" + else + nextStopRemainingTime=$(date -d@$nextStopRemainingSeconds -u +%Hh%Mm%Ss) + fi + + echo " $nextStopName ·  $nextStopRemainingTime · 󰓅 $speed km/h" +} + +main "$@"