Não é possível alterar o plano de fundo da área de trabalho com o crontab

1

Eu agendei um trabalho no crontab para alterar o plano de fundo da área de trabalho aleatoriamente, a cada minuto no Lubuntu, usando o seguinte script:

#!/bin/bash
export DISPLAY=:0
PHOTOS_PATH=~/Pictures/wallpapers/
number_of_photos=$(ls $PHOTOS_PATH | wc -l)

# generates a random number in range 1 through $number_of_photos
random=$( shuf -i 1-$number_of_photos -n 1 )

# returns the name of the file at line number $random of 'ls' output
photo_file=$(ls $PHOTOS_PATH | head --lines=$random | tail --lines=1)

pcmanfm --set-wallpaper=$PHOTOS_PATH/$photo_file
exit 0

Mas a cada minuto, a seguinte mensagem de erro é exibida na tela:

O problema é com a linha do script que emite o comando pcmanfm , já que (de acordo com minhas experiências) essa mensagem aparece exatamente na execução desse comando. Também executei esse script de dentro de tty1 e ele alterou meu plano de fundo da área de trabalho com êxito, sem erros. Como posso superar esse problema com o crontab?

    
por Hedayat Mahdipour 26.03.2018 / 14:23

1 resposta

0

Aqui está a minha versão do seu script. Por esta abordagem nós não precisa se preocupar com qual variável de ambiente devemos exportar, porque exportamos todas as variáveis disponíveis para a sessão do usuário atual.

#!/bin/bash

# NAME: lubuntu-wp-changer

# Initial variables
ITEMS_PATH="$HOME/Pictures/wallpapers"
ITEMS=("$ITEMS_PATH"/*)

# Check whether the user is logged-in, if yes export the current desktop session environment variables
[ -z "$(pgrep lxsession -n -U $UID)" ] && exit 0 || export $(xargs -0 -a "/proc/$(pgrep lxsession -n -U $UID)/environ") >/dev/null

# Generates a random number in the range determinated by the number of the items in the array ${ITEMS[@]}
ITEM=$(( ($RANDOM) % ${#ITEMS[@]} ))

# Set the wallpaper
pcmanfm --set-wallpaper="${ITEMS[$ITEM]}"

exit 0

Aqui está o meu Cronjob que altera o papel de parede a cada três segundos:

* * * * * bash -c 'for i in {1..20}; do $HOME/lubuntu-wp-changer; sleep 3; done'

Aqui está o resultado:

MaisdetalhespodemserencontradosnomeuprojetodoGitHub: cron-gui-launcher .

    
por pa4080 26.03.2018 / 21:28