From 657ef21b0bfe550218bfe112b4eefc620495c26a Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 25 May 2020 15:00:36 +0200 Subject: [PATCH] [polybar] Fix pomo timer notification updating Fixed notifications following outdated pomo timers if the timer was ever paused or restarted. Will now limit the pomo timer to a single 'running' instance containing the notification function. --- polybar/.config/polybar/config | 13 ++++++++- polybar/.config/polybar/scripts/poly-pomo | 35 +++++++++++++++++++++++ polybar/.local/bin/pomo | 1 + 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100755 polybar/.config/polybar/scripts/poly-pomo create mode 120000 polybar/.local/bin/pomo diff --git a/polybar/.config/polybar/config b/polybar/.config/polybar/config index 07e331d..5fdeaa0 100644 --- a/polybar/.config/polybar/config +++ b/polybar/.config/polybar/config @@ -57,7 +57,7 @@ padding-left = 0 padding-right = 0 module-margin-left = 2 -modules-left = workspaces +modules-left = workspaces pomo modules-center = music date papersdue modules-right = networkspeed archupdates cpu temp backlight volume battery ; do not use offsets for the bar, would only work with override-redirect @@ -235,6 +235,17 @@ click-right = exist rofi-bib-due normal "opening due papers" && rofi-bib-due -p3 format-prefix = " " interval = 120 +; displays a small pomodoro timer +[module/pomo] +type = custom/script +exec = $XDG_CONFIG_HOME/polybar/scripts/poly-pomo +exec-if = exist pomo normal "pomodoro timer" +; pause timer +click-left = $XDG_CONFIG_HOME/polybar/scripts/poly-pomo toggle +; restart timer +click-right = $XDG_CONFIG_HOME/polybar/scripts/poly-pomo restart +tail = true + ; display unified available packages for update on arch from repos/aur ; uses pacman-contrib/checkupdates if available to avoid partial arch upgrades [module/archupdates] diff --git a/polybar/.config/polybar/scripts/poly-pomo b/polybar/.config/polybar/scripts/poly-pomo new file mode 100755 index 0000000..9616b16 --- /dev/null +++ b/polybar/.config/polybar/scripts/poly-pomo @@ -0,0 +1,35 @@ +#!/usr/bin/env sh + +run_notify() { + pomo notify & + PID_NOTIFY="$!" + echo "$PID_NOTIFY" >"${XDG_RUNTIME_DIR:-$HOME}"/.running-pomo.lock +} + +# create background notify process; close it when this process is killed +close_notify() { + lockfile="${XDG_RUNTIME_DIR:-$HOME}"/.running-pomo.lock + [ -f "$lockfile" ] && kill "$(cat "$lockfile")" + kill "$PID_NOTIFY" + rm "${XDG_RUNTIME_DIR:-$HOME}"/.running-pomo.lock +} +trap close_notify EXIT + +restart_notify() { + close_notify + run_notify +} + +if [ -z "$1" ]; then + run_notify + while true; do + pomo clock + sleep 1 + done +elif [ "$1" = "toggle" ]; then + pomo pause + restart_notify +elif [ "$1" = "restart" ]; then + pomo stop && pomo start + restart_notify +fi diff --git a/polybar/.local/bin/pomo b/polybar/.local/bin/pomo new file mode 120000 index 0000000..c4dec47 --- /dev/null +++ b/polybar/.local/bin/pomo @@ -0,0 +1 @@ +../share/pomo/pomo.sh \ No newline at end of file