=xscreensaver-watch= pomodoro

· osiux's blog

.org | .md | .gmi | .html

# si estoy con auriculares, estoy en un pomodoro

Hace años que utilizo la técnica pomodoro= 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 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 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 :)

 1#!/bin/bash
 2
 3# This script comes with ABSOLUTELY NO WARRANTY, use at own risk
 4# Copyright (C) 2021 Osiris Alejandro Gomez <osiux@osiux.com>
 5#
 6# This program is free software: you can redistribute it and/or modify
 7# it under the terms of the GNU General Public License as published by
 8# the Free Software Foundation, either version 3 of the License, or
 9# any later version.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14# General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with this program. If not, see <http://www.gnu.org/licenses/>.
18
19# based on https://bbs.archlinux.org/viewtopic.php?pid=1182514
20
21LOG="$HOME/log/xscreensaver-watch.log"
22
23lock()
24{
25exec xscreensaver-command -lock &
26}
27
28last_lock()
29{
30local LOCK
31LOCK="$(grep LOCK "$LOG" | tail -1 | cut -d' ' -f2)"
32[[ -z "$LOCK" ]] && echo "$DATE $TIME LOCK" >> "$LOG"
33echo "$LOCK"
34}
35
36watch_lock()
37{
38LOCK=$(last_lock)
39DATE="$(date +'%F')"
40TIME="$(date +'%H:%M')"
41DIFF="$(timediff "$LOCK" "$TIME")"
42MINUTES="$(time2minutes "$DIFF")"
43[[ "$MINUTES" -ge 5 ]] && echo "$DATE $TIME LOCK" >> "$LOG"
44}
45
46watch_unblank()
47{
48LOCK=$(last_lock)
49DATE="$(date +'%F')"
50TIME="$(date +'%H:%M')"
51DIFF="$(timediff "$LOCK" "$TIME")"
52MINUTES="$(time2minutes "$DIFF")"
53[[ "$MINUTES" -lt 5 ]] && lock
54echo "$DATE $TIME UNBLANK" >> "$LOG"
55}
56
57watch_while()
58{
59while read -r LINE
60do
61case "$LINE" in
62UNBLANK*) watch_unblank;;
63LOCK*)    watch_lock;;
64esac
65done
66}
67
68/usr/bin/xscreensaver-command -watch | watch_while
69

# ChangeLog