O programa que constitui o trabalho at
é filho do atd
(no daemon ), não do shell em que você executa at
. Portanto, ele não herda o ambiente atual do shell. O sistema at
organiza para copiar o ambiente (e o diretório de trabalho e algumas coisas mais obscuras), mas omite algumas variáveis.
Em particular, a variável DISPLAY
não é copiada para o trabalho em. Esta variável informa todos os programas X que exibem para se conectar. Sem um display X, o dzen2 não sabe onde aparecer uma notificação. Em remove DISPLAY
porque geralmente é usado para trabalhos em lote, que não produzem nenhum terminal ou saída gráfica.
notify-send
funciona porque não se conecta ao servidor X: ele usa D-bus para conectar-se a um daemon que está anexado à sua sessão X.
Você pode fazer o dzen2 funcionar explicitamente copiando a variável DISPLAY
:
echo "export DISPLAY=$DISPLAY;" 'echo hello | dzen2 -p' | at now + 42 minutes
É provável que dzen2 produza uma mensagem de erro (a mensagem padrão é Can't open display:
). Qualquer saída ou mensagem de erro produzida pelo trabalho em é enviada por correio local (exatamente como para trabalhos agendados). Verifique seu e-mail local.