O script XRandR é executado corretamente a partir da linha de comando, falha como tarefa cron

2

Estou executando o LXDE no Fedora 21. A finalidade do meu script é estender a exibição em dois monitores:

#!/bin/sh
xrandr --output VIRTUAL1 --off --output LVDS1 --mode 1440x900 --pos 1280x124 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal

Isso é executado sem problemas a partir de uma janela de terminal, mas é bloqueado como uma tarefa do cron.

Do meu log cron:
Jul 9 20:14:01 localhost CROND [19494]: (usuário) CMD (/home/user/screens.sh)
Jul 9 20:14:01 localhost CROND [19492]: (usuário) CMDOUT (Não é possível abrir a tela)

    
por saltface 10.07.2015 / 19:05

1 resposta

3

xrandr precisa da variável $DISPLAY configurada para informar qual sessão X está manipulando, e isso não está sendo definido no ambiente cron.

xrandr pode estar trabalhando em sua sessão X local padrão, ou uma segunda que você iniciou executando startx de um TTY, ou uma sessão para um display remoto sendo encaminhado via SSH, ou uma sessão X aninhada rodando dentro de outro um usando o Xnest, etc. Sem a variável de ambiente $DISPLAY (ou o argumento de linha de comando --display ) ele não pode saber em qual sessão se conectar, então ele é liberado.

Por exemplo, o comando a seguir pode resolver seu problema:

DISPLAY=:0 /home/user/screens.sh
    
por 10.07.2015 / 19:12