Usar el cron de GNU-Linux com a despertador
NOTA: aquest article parla de com fer una frikada amb GNU-Linux... a vegades passa.
És curiós com el cos es torna tolerant al so del despertador. Per solucionar-ho, sempre he pensat que el millor és un despertador amb música que es pugui canviar sovint.
Suposo que aquest és el motiu de l'existència dels ràdio-despertadors. Per desgràcia, no m'agrada despertar-me amb un desconegut que parli, jo vull música. A més, els meus gustos musicals divergeixen força del que es sol sentir a les emissores convencionals.
Així, fa uns mesos vaig començar a mirar si existia algun tipus de despertador amb MP3. I d'existir, existeixen, però a un preu força més elevat del que m'esperava. Així que, aprofitant que dormo al mateix... habitacle... que un ordinador encès amb GNU-Linux i baixant coses de l'aMule tota la nit, vaig pensat que bé podria servir-me de despertador.
Tot buscant vaig arribar a una pàgina amb un tutorial. A continuació explico com m'ho he fet.
Alguns prerequisits
Abans de començar és necessari disposar d'un ordinador amb GNU-Linux instal·lat i amb altaveus. A més, cal instal·lar el reproductor "mplayer", el paquet té el mateix nom (consulteu la pàgina del tutorial per a més informació).
A més, crearem un directori dins del nostre home on posarem els MP3. Per exemple, "alarma".
No cal dir que cal saber obrir un terminal i editar un arxiu de text.
Les comanades
Per al despertador farem servir una sèrie de comandes. A grans trets volem:
- Crear una llista de reproducció a partir dels arxius MP3 d'un directori.
- Obrir un terminal nou on s'executi un Mplayer que reprodueixi la llista de reproducció del pas anterior.
- Tancar el programa Mplayer. Aquesta la farem servir per forçar un tancat del reproductor en cas que ens oblidem de tancar-lo (perquè no es passi el dia sonant).
#!/bin/sh
find /home/elteuusuari/alarma -iname "*.mp3" -o -iname "*.ogg" > /home/elteuusuari/alarma/.playlist
/usr/bin/X11/xterm -display :0 -bg black -fg white -e mplayer -shuffle -playlist /home/elteuusuari/alarma/.playlist
Ja sé que la segona comanda és molt estranya, però és com funciona quan l'ha d'executar el cron.
Per a la última comanda (matar el mplayer), farem servir
pkill mplayer
Que bàsicament mata el primer procés anomenat mplayer que trobi.
Configurar el cron
En el meu cas, volia que el despertador sonés només els dies laborables a les 7:10 del matí tots els mesos de l'any i que parés a les 8:40. Per tant, executant la comanda
crontab -e
# m h dom mon dow command
10 07 * * 1-5 /home/elteuusuari/alarm.sh
45 08 * * 1-5 pkill mplayer
- Primera partícula (m): identifica el minut. En el meu cas el primer s'executa a i 10 i el segon a tres quarts.
- Segona partícula (h): representa l'hora. Si volgués que s'executés a cada hora, posaria un *
- Tercera partícula (dom): acrònim de "Day Of Mont". Pot rebre valors de l'1 al 31 o bé un *
- Quarta partícula (mon): és el mes. En el meu cas, no n'especifico cap, però seria un número de l'1 al 12, o el nom del mes en anglès.
- Cinquena partícula (dow): acrònim de "Day Of Week". On 1 representa el dilluns i 7 el diumenge. I crec que tant el 0 com el 7 són diumenge. També és possible especificar el nom curt en anglès (per exemple, "sun" per sunday). En el meu cas volia només de dilluns a divendres, així que he posat 1-5.
- Última partícula (command): és la comanda pròpiament dita.