Le contexte :
- Je veux écrire un widget Awesome, qui donne le nombre de mises à jours remonté par yaourt.
Code : Tout sélectionner
require("awful.remote") yaourt_info = widget({ type = "textbox" , name = "yaourtw" }) yaourt_info.text = "-2" function yaourt_update(text) yaourt_info.text = text end
- J'utilise un script joué depuis ma crontab pour passer les infos pertinentes à Awesome, le tout via dbus, c'est à dire en utilisant l'outil "awesome-client".
Code : Tout sélectionner
#!/bin/bash ############################### # Bash script that feeds Awesome pacman widget # This script is intended to be launched by cron ###################################################### export TERM="xterm" ; #export DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-YFLko6muIW,guid=f107814faceb7b070592adee5084fd7c" #export DBUS_SESSION_BUS_PID="4500" #export DBUS_SESSION_BUS_WINDOWID="41943041" # Function that updates text of pacman Awesome widget update_w(){ echo "yaourt_update(\"$1\")" | awesome-client } # testing connection if ! [ "`ping -c 1 google.com`" ]; then # no connection available, send red -1 update_w "<span color=\\\"red\\\">-1</span>" else # updating pacman sudo pacman -Sy > /dev/null 2>&1 # getting number of updates via yaourt #count=`yaourt -Qu | wc -l` export count=0 # formating text in function of number of updates if [ $count -le 3 ]; then update_w "<span color=\\\"white\\\">$count</span>" elif [ $count -gt 3 -a $count -le 6 ]; then update_w "<span color=\\\"yellow\\\">$count</span>" elif [ $count -gt 6 -a $count -le 10 ]; then update_w "<span color=\\\"orange\\\">$count</span>" else update_w "<span color=\\\"red\\\">$count</span>" fi fi
Mon problème vient de cette erreur, qui est générée quand le script se lance avec cron :
Code : Tout sélectionner
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.naquadah.awesome.awful was not provided by any .service files
Là ou ça se complique : Ce problème est connu,il est dû à une variable dbus manquante (DBUS_SESSION_BUS_ADDRESS). Le workaround donné ici, consiste à prendre les valeurs présentes dans le dernier fichier du répertoire "/home/user/.dbus/session/". Pour info, j'ai repris les valeurs de ce fichier et je les ai directement inséré dans mon script (cf. export en commentaire).
Et donc, le workaround ne fonctionne pas

Dernier point peut être important : je viens de passer en systemd récemment.
J'en viens à penser que cela est dû à la configuration des sessions dbus, que je ne maîtrise pas.
Et c'est là que je me tourne vers vous...

Avec une question principalement : Pourquoi mes variables dbus ne fonctionnent pas depuis cron?
Merci d'avance, déjà pour avoir lu jusqu'ici,
V.