xfconf-query, crontab, “Falha ao iniciar o libxfconf: Não é possível iniciar automaticamente um dbus-daemon sem um $ DISPLAY para X11.”

1

Tenho o Xubuntu 16.04 e estou tentando executar o seguinte script a partir do crontab:

#!/bin/bash

status=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac)
vid="/dev/video0"

if [ -z "$status" ]; then
    exit 1
fi

if [ -e "$vid" -a "$status" -gt 14 ]; then
    xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14
elif [ ! -e "$vid" -a "$status" -eq 14 ]; then 
    xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 25
fi

Funciona perfeitamente quando é executado a partir do terminal. No entanto, do crontab eu recebo este erro.

Failed to init libxfconf: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.

Aqui está a minha entrada no crontab. Foi editado usando crontab -e .

*/5 * * * * (bash -x /home/brock/bin/vid-power) > /home/brock/Desktop/debug.log 2>&1

Aqui está a saída completa do meu debug.log.

~/Desktop$ cat debug.log 
++ xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac
Failed to init libxfconf: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11.
+ status=
+ vid=/dev/video0
+ '[' -z '' ']'
+ exit 1

Eu tentei várias soluções, incluindo o comentário aqui e this one , mas nenhum funcionou.

    
por jbrock 01.08.2016 / 03:08

2 respostas

1

Eu fiz o seguinte, permite-me invocar xfconf-query de crontab :

Primeiro, obtenha o valor dessa variável:

echo $DBUS_SESSION_BUS_ADDRESS

Você verá um caminho como este:

unix:path=/run/user/1000/bus

Em seguida, use:

env DBUS_SESSION_BUS_ADDRESS=[path] xfconf-query ....

Eu não entendo o mecanismo detalhado por trás dele, mas funciona para mim:)

    
por Yan King Yin 13.04.2018 / 11:01
1

Eu apenas configurarei esse script para ser executado como Sessão e Inicialização > Item de início automático do aplicativo.

#!/bin/bash   

vid="/dev/video0"

while true; do
    status=$(xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac)
    if [ -e "$vid" -a "$status" -gt 14 ]; then
        xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 14
    elif [ ! -e "$vid" -a "$status" -eq 14 ]; then 
        xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/inactivity-on-ac -s 25
    fi
    sleep 5m
done
    
por jbrock 01.08.2016 / 21:53