💾 Archived View for gmi.osiux.com › 2021-03-07-xscreensaver-watch-pomodoro.gmi captured on 2022-04-29 at 11:33:12. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

➡️ Next capture (2023-01-29)

-=-=-=-=-=-=-

`xscreensaver-watch` pomodoro

si estoy con auriculares, estoy en un *pomodoro*

Hace años que utilizo *`la técnica pomodoro=`* ^1[1] y no es fácil llevarla adelante, por un lado requiere de cierta auto-disciplina y el entorno que me rodea no siempre contribuye, pero recuerdo que en un momento de auge había convencido a mis pares que si estaba con auriculares y con una notificación con un tomate, significaba que debían esperar en el peor de los casos 25 minutos para "molestarme".

soy mi peor enemigo

Es fácil tirar culpas, pero la verdad, es probable que yo mismo haya sido quién interrumpió un *pomodoro* o me puse a hacer otra cosa, o ni siquiera inicié el *pomodoro* o lo inicié sin una definición precisa de la tarea que estaba por realizar.

Mucho peor, es ignorar las advertencias y continuar trabajando, sin realizar una pausa de 5 minutos, muchas veces sucede eso y es terrible porque no alejarse unos minutos del teclado hace mal en todo sentido, no te permite repensar un poco que estabas haciendo, porqué no funcionaba o porqué te estas frustrando con eso que no te sale, tal vez simplemente te dejaste llevar y te fuiste por las ramas.

la pausa son 5 minutos obligatorios!

Algo que le faltaba a mi *script* `pomodoro` ^2[2] era obligarme a pausar 5 minutos, luego de 25 minutos de trabajo intenso y enfocado, asi que estuve dándole vueltas a esa idea hace unos días, ya que estoy intentando ser un poco mas estricto con mis *pomodoros* y buscando por la web, caí en un foro ^3[3] donde había un ejemplo para escuchar los eventos de `xscreensaver` y en función de esos estados disparar acciones!

`xscreensaver-watch`

Mi primer versión del *script* `xscreensaver-watch` se ocupa de registrar en un *log* cada vez que se bloquea (`LOCK`) o desbloquea (`UNBLANK`) y en función de la fecha y hora, verificar si todavía no pasaron 5 minutos, vuelve a activar `xscreensaver` y por más que vuelva a intentar desactivarlo ingresando mi contraseña, si no pasaron 5 minutos, me deja fuera de mi *notebook* :P

Falta pulir un poco, pero va queriendo bloquear correctamente `:)`


#!/bin/bash

# This script comes with ABSOLUTELY NO WARRANTY, use at own risk
# Copyright (C) 2021 Osiris Alejandro Gomez <osiux@osiux.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.gmi/licenses/>.

# based on https://bbs.archlinux.gmi/viewtopic.php?pid=1182514

LOG="$HOME/log/xscreensaver-watch.log"

lock()
{
  exec xscreensaver-command -lock &
}

last_lock()
{
  local LOCK
  LOCK="$(grep LOCK "$LOG" | tail -1 | cut -d' ' -f2)"
  [[ -z "$LOCK" ]] && echo "$DATE $TIME LOCK" >> "$LOG"
  echo "$LOCK"
}

watch_lock()
{
  LOCK=$(last_lock)
  DATE="$(date +'%F')"
  TIME="$(date +'%H:%M')"
  DIFF="$(timediff "$LOCK" "$TIME")"
  MINUTES="$(time2minutes "$DIFF")"
  [[ "$MINUTES" -ge 5 ]] && echo "$DATE $TIME LOCK" >> "$LOG"
}

watch_unblank()
{
  LOCK=$(last_lock)
  DATE="$(date +'%F')"
  TIME="$(date +'%H:%M')"
  DIFF="$(timediff "$LOCK" "$TIME")"
  MINUTES="$(time2minutes "$DIFF")"
  [[ "$MINUTES" -lt 5 ]] && lock
  echo "$DATE $TIME UNBLANK" >> "$LOG"
}

watch_while()
{
while read -r LINE
do 
  case "$LINE" in
    UNBLANK*) watch_unblank;;
    LOCK*)    watch_lock;;
  esac
done
}

/usr/bin/xscreensaver-command -watch | watch_while

ChangeLog

1: https://osiux.com/la-tecnica-pomodoro.html

2: https://osiux.com/pomodoro-notify-send.html

3: https://bbs.archlinux.gmi/viewtopic.php?pid=1182514

4: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/f6e60c7015bbf1e5a2efb6a25e17b05398f3c7a1