Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/07/2017, à 11:10

Dev222

[RESOLU] Crontab et Zenity --notification

Salut à tous ! smile

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 big_smile

$ crontab -u gaetan -e
30 * * * * /home/gaetan/Scripts/Synchro/Synchro.sh

Sauf que .. Non pas tout à fait neutral ... 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é sad
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, à 13:23)

Hors ligne

#2 Le 15/07/2017, à 12: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 tongue .
Par contre j'ai donné les droits de X a crontab wink 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, à 12: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, à 12:18

Dev222

Re : [RESOLU] Crontab et Zenity --notification

Merci pour ta réponse helias
Malheureusement ça ne fonctionne pas du tout chez moi hmm

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 smile

Dernière modification par Dev222 (Le 15/07/2017, à 13:22)

Hors ligne