From 050bac9c555a45dabae11671d7aaa3188c46f730 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 25 May 2020 15:25:45 +0000 Subject: [PATCH] [polybar] Add pomo timer as git submodule Using [jsspencer/pomo](https://github.com/jsspencer/pomo) as the timer of choice. It is simple, it works well, and it uses a very elegant way of tracking the time. I can think about implementing my own version later, but this will handily suffice for now. Polybar script will now limit the pomo timer to a single 'running' instance containing the notification function, by putting its running instance PID in a lockfile and killing it before restarting or changing the timer. Added running and paused tomato icons; as well as break coffee icon. Removed display of seconds, unless the last minute of a timer is running. --- .gitmodules | 3 ++ polybar/.config/polybar/config | 18 +++++++- .../.config/polybar/scripts/poly-papersdue | 2 +- polybar/.config/polybar/scripts/poly-pomo | 41 +++++++++++++++++++ polybar/.local/bin/pomo | 1 + polybar/.local/share/pomo | 1 + 6 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 .gitmodules create mode 100755 polybar/.config/polybar/scripts/poly-pomo create mode 120000 polybar/.local/bin/pomo create mode 160000 polybar/.local/share/pomo diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..bb95830 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "polybar/.local/share/pomo"] + path = polybar/.local/share/pomo + url = https://github.com/jsspencer/pomo.git diff --git a/polybar/.config/polybar/config b/polybar/.config/polybar/config index 5175fac..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 @@ -212,6 +212,7 @@ time-alt = %H:%M label = %date% %{T2} %{T-}%time% ; display information on currently playing track, allows simple track manipulation +; TODO: add album art display (on click?) - retrieved by playerctl metadata mpris:artUrl [module/music] type = custom/script exec = $XDG_CONFIG_HOME/polybar/scripts/poly-mprisdisplay @@ -219,7 +220,6 @@ exec-if = type $XDG_CONFIG_HOME/polybar/scripts/poly-mprisdisplay tail = true click-left = kill -USR1 %pid% click-right = kill -USR2 %pid% -; TODO: add album art display (on click?) - retrieved by playerctl metadata mpris:artUrl ; display information on remaining papers to read for the upcoming week [module/papersdue] @@ -227,11 +227,25 @@ type = custom/script exec = $XDG_CONFIG_HOME/polybar/scripts/poly-papersdue exec-if = type bib-due tail = true +; show list with high prio click-left = exist rofi-bib-due normal "opening due papers" && rofi-bib-due -p1 -u $(date --date='fri this week' +%Y-%m-%d) +; show list with all +click-right = exist rofi-bib-due normal "opening due papers" && rofi-bib-due -p3 -u $(date --date='fri this week' +%Y-%m-%d) ; format-foreground = ${colors.primary} 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-papersdue b/polybar/.config/polybar/scripts/poly-papersdue index e1cbc85..7eb1084 100755 --- a/polybar/.config/polybar/scripts/poly-papersdue +++ b/polybar/.config/polybar/scripts/poly-papersdue @@ -1,7 +1,7 @@ #!/usr/bin/env sh while true; do - all="$(bib-due -u 'fri this week' | wc -l)" + all="$(bib-due -u 'fri this week' -p3 | wc -l)" required="$(bib-due -u 'fri this week' -p1 | wc -l)" # add polybar formatting to color required readings red diff --git a/polybar/.config/polybar/scripts/poly-pomo b/polybar/.config/polybar/scripts/poly-pomo new file mode 100755 index 0000000..ccef2f4 --- /dev/null +++ b/polybar/.config/polybar/scripts/poly-pomo @@ -0,0 +1,41 @@ +#!/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 + display=$(pomo clock) + # replace W (work) + # B (break) + # P (paused) with pomodoro symbols + # remove seconds *except for* when 00 minutes reached + display=$(echo "$display" | sed -e 's/P.*$/  /;s/W/ /;s/B/ /;/00:/! { s/:[[:digit:]]\+$// }') + echo "$display" + 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 diff --git a/polybar/.local/share/pomo b/polybar/.local/share/pomo new file mode 160000 index 0000000..68a8e26 --- /dev/null +++ b/polybar/.local/share/pomo @@ -0,0 +1 @@ +Subproject commit 68a8e26a46f8516ee73b429c153a1fc7a4a2c300