Script para enviar notificaciones mediante notify-send

Hace tiempo leí en en el blog de Fausto como utilizar el comando notify-send e instalar las librerías. Esta entrada no pretende enseñar a utilizar o instalar lo necesario para notify-send, solo mostrar el script que logre a partir del que tiene Fausto.

Generalmente uso este script como cronometro mientras estoy cocinando.

Lo toquetee un poco para que alcanzara para diez notificaciones este script, avisara cuando ya no hay disponibles, preguntara el tiempo en minutos y como soy muy olvidadiza me dejara una nota con el tiempo para que se ejecute el comando, el mensaje, etc en el archivo /tmp/notificacion-sonido/notificacion-X-remind.txt. Crea la carpeta /tmp/notificacion-sonido, dentro de ella sitúa el archivo antes mencionado y el sonido para notify-send (/tmp/notificacion-sonido/notificacion-X-remind.wav). Al terminar de ejecutarse la notificación, la carpeta junto con su contenido son borrados automáticamente si no hay más pendientes.

Los script los meto dentro de la carpeta ~/.gnome2/nautilus-scripts y la imagen que adorna la notificación también la sitúe en la misma. Su nombre es remind.png, puede cambiarse el tipo de imagen y la ubicación según las necesidades personales.

 

Nota.- Cuando envio una notificación en Ubuntu y el programa no esta instalado me indica como agregarlo. Ejemplo de como enviar una notificación: notify-send "Hola"

 

Pasos para su utilización

  1. Crear el archivo en la carpeta indicada ~/.gnome2/nautilus-scripts, o en cualquiera que se desee
  2. Ubicar la imagen de elección con el nombre remind.png en la carpeta de los script para nautilus o modificar la ruta en el script
  3. Dar permisos de ejecución al archivo

    chmod a+x "ruta del script"

    Ejemplo:

    chmod a+x "/home/`whoami`/.gnome2/nautilus-scripts/notificacion-sonido.sh"

  4. Este script lo llamo con un atajo de teclado que agregue con Gconf (gconf-editor). Se agrega modificando dos variables a) /apps/metacity/global_keybindings/run_command_X y b) /apps/metacity/keybinding_commands/command_X. Donde la X al final se cambia por un número que va del 1-12 y debe de ser el mismo para las dos variables. En el primero se le indican cuales teclas van a ser utilizadas para este atajo y en el segundo la acción a realizar.
    Desde la terminal y en un solo paso:

    gconftool-2 --type string -s /apps/metacity/global_keybindings/run_command_9 '<Mod4><Alt>s'; gconftool-2 --type string -s /apps/metacity/keybinding_commands/command_9 "sh /home/`whoami`/.gnome2/nautilus-scripts/notificacion-sonido.sh"

    En esta linea de comandos es el atajo 9 y las teclas rápidas son la super L + Alt + s. Se cambian según las necesidades. La ruta del script debe de estar completa para que funcione correctamente el atajo de teclado.

Nota.- whoami es un comando que indica cual es el nombre de usuario para nuestro /home y el acento grave (`) hacen que se ejecute antes que chmod.

Script

#!/usr/bin/env bash

# Permite al usuario enviar hasta diez mensajes y/o recordatorios por medio de notify-send, decidiendo en cuanto tiempo va a ejecutarse; y avisa cuando se acaban las notificaciones disponibles.

# En /tmp crea la carpeta notificacion-sonido, dentro de ella esta un archivo de texto con los datos de cuando fue enviada la notificación, en cuanto tiempo va a ejecutarse y cual es el mensaje. También se encuentra el archivo de sonido para notify-send. Al terminar de ejecutarse el script borra dicha carpeta junto con su contenido.

# Crea la carpeta para notificacion-sonido
mkdir "/tmp/notificacion-sonido/"

# Se encargan de buscar archivos especificos.

buscarconls1=`ls "/tmp/notificacion-sonido/notificacion-1-remind.wav"`

buscarconls2=`ls "/tmp/notificacion-sonido/notificacion-2-remind.wav"`

buscarconls3=`ls "/tmp/notificacion-sonido/notificacion-3-remind.wav"`

buscarconls4=`ls "/tmp/notificacion-sonido/notificacion-4-remind.wav"`

buscarconls5=`ls "/tmp/notificacion-sonido/notificacion-5-remind.wav"`

buscarconls6=`ls "/tmp/notificacion-sonido/notificacion-6-remind.wav"`

buscarconls7=`ls "/tmp/notificacion-sonido/notificacion-7-remind.wav"`

buscarconls8=`ls "/tmp/notificacion-sonido/notificacion-8-remind.wav"`

buscarconls9=`ls "/tmp/notificacion-sonido/notificacion-9-remind.wav"`

buscarconls10=`ls "/tmp/notificacion-sonido/notificacion-10-remind.wav"`

buscarconls11=`ls "/tmp/notificacion-sonido/notificacion-11-remind.wav"`

# Establece el mensaje
msg=$(zenity --entry --title="notificacion-sonido.sh" --text="Recordatorio")

# Establece el tiempo en minutos. Con la variable $tim se estable el tiempo en minutos. La variable $tim2 se encarga de hacer la conversión.
tim=$(zenity --entry --title="notificacion-sonido.sh" --text="Tiempo para ejecutarse en minutos" --entry-text "1")
tim2=`echo "$tim * 60" | bc`

# Establece la ruta del icono de la notificación.
remind_icon="/home/`whoami`/.gnome2/nautilus-scripts/a.jpg"

# Bucle para tener hasta diez mensajes pendientes y que avise cuando se acabaron los disponibles.

if [ "x${buscarconls1}" != "x/tmp/notificacion-sonido/notificacion-1-remind.wav" ]
then
# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-1-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-1-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-1-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-1-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-1-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls2}" != "x/tmp/notificacion-sonido/notificacion-2-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-2-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-2-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-2-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-2-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-2-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls3}" != "x/tmp/notificacion-sonido/notificacion-3-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-3-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-3-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-3-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-3-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-3-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls4}" != "x/tmp/notificacion-sonido/notificacion-4-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-4-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-4-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-4-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-4-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-4-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls5}" != "x/tmp/notificacion-sonido/notificacion-5-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-5-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-5-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-5-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-5-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-5-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls6}" != "x/tmp/notificacion-sonido/notificacion-6-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-6-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-6-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-6-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-6-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-6-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls7}" != "x/tmp/notificacion-sonido/notificacion-7-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-7-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-7-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-7-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-7-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-7-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls8}" != "x/tmp/notificacion-sonido/notificacion-8-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-8-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-8-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-8-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-8-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-8-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls9}" != "x/tmp/notificacion-sonido/notificacion-9-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-9-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-9-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-9-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-9-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-9-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

elif [ "x${buscarconls10}" != "x/tmp/notificacion-sonido/notificacion-10-remind.wav" ]
then

# Crea un archivo de texto simple con los parámetros de este script para consulta.
printf "***** Notificaci\363n *****\n\nPara ejecutarse en:\n\t$tim minutos\n\nEl mensaje es:\n\t$msg\n\nFecha y hora en que se creo la notificaci\363n:\n\t`date +"%F"` a las `date +"%r"`\n\n\n\n" >> "/tmp/notificacion-sonido/notificacion-10-remind.txt"

# Crea el archivo de sonido con el mensaje para la notificación.
espeak -a 200 -p 90 -s 170 -k10 -w "/tmp/notificacion-sonido/notificacion-10-remind.wav" "$msg"

# Envia la notificación y hace que se escuche
(sleep $tim2 && notify-send -u normal -i "$remind_icon" "$msg" && aplay "/tmp/notificacion-sonido/notificacion-10-remind.wav") || sleep 1s

# Limpieza de los archivos creados por este script

# Borra el archivo wav y el recordatorio.
rm -v "/tmp/notificacion-sonido/notificacion-10-remind.wav"
rm -v "/tmp/notificacion-sonido/notificacion-10-remind.txt"

# Hace que espere un segundo antes de intentar borrar la carpeta que se creo al principio de este script.
sleep 1s

# Si esta vacía la carpeta la borra.
rmdir -v "/tmp/notificacion-sonido/"

# Hace que espere un segundo antes de salir del script.
sleep 1s

# Sale del script
exit

else [ "x${buscarconls11}" != "x/tmp/notificacion-sonido/notificacion-11-remind.wav" ]
zenity --timeout "2" --title "notify-send" --info --text "Se acabaron las notificaciones de sonido disponibles"

# Sale del script
exit

fi

 

 

 

 

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s