Valkertown Blog

Redirección a el nuevo blog en 5 segundos...

miércoles, septiembre 07, 2005


Bien, hoy va una idea que me ha resultado muy agradable, aunque
mientras escogí el intervalo necesario llego a ser una molestia.



Usualmente trabajo en tantos proyectos o tengo tantas ideas
que es difícil llevar la cuenta o no perderme demasiado tiempo
en proyectos y desatender otros, de esta forma se me ocurrió
utilizar XOSD para
imprimir ocasionalmente una lista de tareas o ideas en la pantalla.



Actualmente yo utilizo el XOSD en bastantes programas, desde el
uso más simple usando el plugin para XMMS para ver algunos mensajes
de XMMS como la identificación del archivo en reproducción
el volumen, y algunos otros mensajes que traen información útil.



Ocasionalmente utilizo el osd_cat en unión con tail -f para
imprimir algún log del que me interese estar enterado, algo así:



$tail -f /var/log/secure | osd_cat



Ahora el uso de osd_cat es muy sencillo, no lo voy
a explicar aquí sin embargo voy a colocar un pequeño script
que pone una lista TODO en la pantalla:



Listing: xosd_TODO

-------------------------------------------------------------------------------

#!/bin/sh



FONT="-*-courier-*-r-normal-*-*-*-*-*-*-*-*-*"

OPTIONS="-p top -A left -f $FONT -c red -s black -O 3 -d 1 -l 20 -w "

TODO_FILE=$HOME/TODO

/usr/local/bin/osd_cat $OPTIONS $TODO_FILE

-------------------------------------------------------------------------------


Así ahora es crear el archivo $HOME/TODO y luego de esto llamar
el xosd_TODO, la fuente puede ser cambiada según lo que entrega
el xfontsel, el -l n dice que ubique n lineas en la pantalla y haga
scroll sobre estas, para hacer un scroll limpio de la primera a la última
linea del archivo, recomiendo añadir algo así como n lineas en blanco
al principio y final del archivo así se pueden leer
cómodamente desde la primera a la última linea



Como la idea es que este método nos recuerde constantemente
la lista de tareas el paso a seguir es añadir una tarea en el
cron del usuario.



$crontab -e


Y se añade esta linea


*/60 * * * * DISPLAY=localhost:0.0 $HOME/bin/xosd_TODO 2>&1 > /dev/null


El */60 le dice que cada 60 minutos dispare nuestro script y se redirigen
tanto la salida y el error al vacío para evitar correos molestos provenientes
del cron.


Ahora por qué DISPLAY=localhost:0.0 ?
La respuesta es por que el cron no tiene acceso al servidor X, así
que este método requiere añadir al .xinitrc (o en algún otro sitio
donde no tengamos que preocuparnos por dar este comando a mano):


$xhost +localhost


Esto si se confía plenamente en los usuarios que se registran en la máquina
simultáneamente, pues esto les permitiría dirigirnos programas
que se conecten al servidor X y puede llegar a ser molesto, en
sí no es una buena idea y pensaría que es una falla en la seguridad pero
aún no he encontrado un método que me permita restringir la conexión a un
programa o activar el cron con acceso al servidor particular X.


Es bueno recordar que el 0.0 es el identificador tradicional para
el primer servidor X que se inicia en la máquina si se trabaja con otro
identificador para el servidor X en uso hay que cambiarlo en la linea
del cron.


No complico más este HOWTO pero creo que se puede
mejorar aun más el método que uso para ponerlo a funcionar
automatizar un poco y sobre todo arreglar los
problemas de seguridad.



EOT