#1 Le 15/07/2017, à 10:10
- Dev222
[RESOLU] Crontab et Zenity --notification
Salut à tous !
J'ai écrit un script de synchronisation entre mes deux PC et mon Raspberry et j'aimerais être notifié de son avancement pour éviter d'éteindre ma machine pendant un transfert
Pour ça j'ai trouvé Zenity qui correspond exactement à ce que je recherche, et fonctionne très bien quand je lance mon script de synchro via le Terminal
function Notif {
zenity --notification --text="$1" --window-icon="/home/gaetan/.icons/Paper/48x48@2x/emblems/emblem-$2.png" --display=:0.0
}
Notif "coucou" "default"
Cool tout fonctionne, je vais pouvoir l'automatiser via crontab et avoir l'esprit reposé pour mes données importantes
$ crontab -u gaetan -e
30 * * * * /home/gaetan/Scripts/Synchro/Synchro.sh
Sauf que .. Non pas tout à fait ... Mon script a beau être lancé en tant qu'utilisateur, zenity ne semble pas avoir accès à X
Mon premier réflexe a été d'ajouter
export DISPLAY=:0
, mais ça n'a rien changé
J'ai également tenté de mettre le chemin absolu de zenity ( /usr/bin/zenity ) mais toujours pas
Alors j'ai fait pas mal de recherches, et j'ai trouvé une solution qui consiste à insérer une ligne dans le .bashrc
xhost local:gaetan > /dev/null
Raté.
Voilà ce que j'obtiens en déboguage:
** (zenity:7226): WARNING **: Error showing notification: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files
Comment je peux faire pour que zenity soit fonctionnel dans un script lancé par crontab ?
Merci d'avance pour votre aide
EDIT 1: En remplaçant --notification par --info j'obtiens bien une fenêtre
Dernière modification par Dev222 (Le 15/07/2017, à 12:23)
Hors ligne
#2 Le 15/07/2017, à 11:02
- helias
Re : [RESOLU] Crontab et Zenity --notification
Bonjour Dev,
J'ai essayé de mon côté et j'ai fait un copier coller de ton script en changeant biensur les chemins en question .
Par contre j'ai donné les droits de X a crontab et ça marche nickel chez moi.
* * * * * DISPLAY=:0.0 /home/helias/test.sh
tiens moi au courant.
Hélias
Hors ligne
#3 Le 15/07/2017, à 11:15
- helias
Re : [RESOLU] Crontab et Zenity --notification
Petite réctification.
Je n'ai pas mis " embleme-$2.jpg " mais
function Notif {
zenity --notification --text="$1" --window-icon=/home/helias/Images/image/$2.jpg --display=:0.0
}
Notif "coucou" "image"
Hors ligne
#4 Le 15/07/2017, à 11:18
- Dev222
Re : [RESOLU] Crontab et Zenity --notification
Merci pour ta réponse helias
Malheureusement ça ne fonctionne pas du tout chez moi
J'ai créé un script à part pour tester différentes solutions:
#!/bin/bash
exec >/home/gaetan/Bureau/synchro.log 2>&1
function Notif {
zenity --info --text="$1" --window-icon="/home/gaetan/.icons/Paper/48x48@2x/emblems/emblem-$2.png" --display=:0.0
zenity --notification --text="$1" --window-icon="/home/gaetan/.icons/Paper/48x48@2x/emblems/emblem-$2.png" --display=:0.0
/usr/bin/notify-send "$1"
}
Notif "coucou" "default"
La première ligne fonctionne, j'ai bien une fenêtre qui vois le jour
Par contre je continue a avoir ce message concernant zenity --notification:
** (zenity:15808): WARNING **: Error showing notification: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The
name org.freedesktop.Notifications was not provided by any .service files
J'ai également essayé d'ajouter ces lignes au début du fichier cron, sans résultat
DISPLAY=:0.0
XAUTHORITY=/home/gaetan/.Xauthority
Et voilà mon crontab actuel:
* * * * * DISPLAY=:0.0 /home/gaetan/Scripts/Synchro/notif.sh
* * * * * /usr/bin/notify-send 'Un espoir ?'
Je sais pas si ça peut aider, mon environnement de bureau est Cinnamon
SOLUTION:
En recherchant comme un bourrin sur les forums anglophones j'ai finalement trouvé cette solution: https://unix.stackexchange.com/question … wer-134761
Voici mon script de tests après quelques modifications:
#!/bin/bash
# Fix : Détermine le DBUS de l'utilisateur courant
DBUS=$(pgrep -ou $(whoami) cinnamon)
DBUS="$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$DBUS/environ | sed 's/DBUS_SESSION_BUS_ADDRESS=//')"
# Fonction de notif
function Notif {
DBUS_SESSION_BUS_ADDRESS="$DBUS" zenity --notification --text="$1" --window-icon="/home/gaetan/.icons/Paper/48x48@2x/emblems/emblem-$2.png" --display=:0.0
}
# Test
Notif "coucou" "default"
j'espère que ça pourra en aider d'autres
Dernière modification par Dev222 (Le 15/07/2017, à 12:22)
Hors ligne