it-swarm-es.com

gsettings set org.gnome.desktop.background no funciona

Estoy tratando de descargar una imagen diaria y configurarla como mi imagen de fondo con:

#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"

rm -f ${PICS}/wall.jpg
rm -f ${PICS}/photo-of-the-day

# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day

# parse the url out from the file
url=`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2`

# download the photo
wget http:$url -O ${PICS}/wall.jpg

# set the desktop background
URI=file:///${PICS}/wall.jpg
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri ${URI}

La imagen se descarga como se esperaba, pero el fondo no está configurado realmente. Curiosamente, funciona si modifico URI para incluir más o menos barras diagonales, pero lo hace solo una vez. Termino teniendo que modificar el script de una manera que no debería tener sentido cada vez para que esta sección funcione.

¿Qué podría estar causando esto?

3
Pavel Komarov

Creo que encontré el problema: incluso si voy al archivo, hago clic derecho y digo "Establecer como fondo de pantalla ...", no pasa nada. Así que postulé que es el hecho de que el nombre del archivo no cambia cada vez; Linux tiene algún tipo de ahorro de costos que no voy a actualizar porque es la misma imagen. Para obligar al sistema a reconocer que es una imagen nueva cada vez, varíe el nombre del archivo de esta manera:

#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"
Rand=$RANDOM

rm -f ${PICS}/*.jpg
rm -f ${PICS}/photo-of-the-day

# download photo-of-the-day page
wget http://photography.nationalgeographic.com/photography/photo-of-the-day -O ${PICS}/photo-of-the-day

# parse the url out from the file
url=`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '"' -f 2`

# download the photo
wget http:$url -O ${PICS}/wall${Rand}.jpg

# set the desktop background
URI="file://${PICS}/wall${Rand}.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
1
Pavel Komarov

Puede citar la variable completa URI como han mostrado los cmks, o asegurarse de que file:// y wall.jpg están entre comillas, así:

URI="file:///"${PICS}"/wall.jpg"

Aquí hay una pequeña mejora de su script. Las variables se usan para acortar la línea de comando. El archivo se guarda en /tmp, que se elimina cada vez que se reinicia el sistema, por lo que no tiene que borrar manualmente el caché. AWK se utiliza para mejorar el análisis y disminuir las tuberías. wget escribe directamente en AWK para evitar guardar archivos adicionales

#!/bin/bash

# set variables to shorten lines
FILE="/tmp/photo_of_the_day"
PAGE="http://photography.nationalgeographic.com/photography/photo-of-the-day"
SEARCH="images.nationalgeographic.com.*cache.*990x742.jpg"

# get image URI directly
IMAGE=$(wget "$PAGE" -O - -o /dev/null  | awk -F'"' -v regex="$SEARCH" '$0~ regex {print $2}')

# download the photo
wget http:$IMAGE -O "$FILE"

# set the desktop background
URI="file:///$FILE"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
1

pruébalo de esta manera:

#!/bin/bash
# clear cache
PICS="/home/pvlkmrv/Pictures"

rm -f "${PICS}/wall.jpg"
rm -f "${PICS}/photo-of-the-day"

# download photo-of-the-day page
wget "http://photography.nationalgeographic.com/photography/photo-of-the-day" -O "${PICS}/photo-of-the-day"

# parse the url out from the file
url="`cat ${PICS}/photo-of-the-day | grep 'images.nationalgeographic.com.*cache.*990x742.jpg' | cut -d '\"' -f 2`"

# download the photo
wget "http:$url" -O "${PICS}/wall.jpg"

# set the desktop background
# only two slashes here, because the PICS var already has a leading slash
URI="file://${PICS}/wall.jpg"
echo ${URI}
gsettings set org.gnome.desktop.background picture-options 'centered'
gsettings set org.gnome.desktop.background picture-uri "${URI}"
1
cmks