gsettings set org.gnome.desktop.background не работает

gsettings set org.gnome.desktop.background не работает

Я пытаюсь загрузить ежедневное изображение и установить его в качестве фонового изображения с помощью:

#!/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}

Изображение загружается так, как и ожидалось, но фон фактически не устанавливается. Странно, но это работает, если я изменяю URI, чтобы включить больше или меньше прямых слешей, но это происходит только один раз. В итоге мне приходится изменять скрипт, который должен быть бессмысленным, каждый раз, чтобы заставить этот раздел работать.

Что может быть причиной этого?

решение1

попробуйте так:

#!/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}"

решение2

Вы можете либо заключить в кавычки всю URIпеременную, как показано в cmks, либо убедиться, что file://и wall.jpgзаключены в кавычки, например так:

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

Вот небольшое улучшение вашего скрипта. Переменные используются для сокращения командной строки. Файл сохраняется в /tmp, который удаляется каждый раз при перезапуске системы, поэтому вам не нужно вручную очищать кэш. AWK используется для улучшения разбора и уменьшения конвейеризации. wgetнапрямую пишет в AWK, чтобы избежать сохранения дополнительных файлов

#!/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}"

решение3

Кажется, я нашел проблему: даже если я перехожу к файлу, щелкаю правой кнопкой мыши и говорю "Установить как обои...", ничего не происходит. Поэтому я предположил, что это тот факт, что имя файла не меняется каждый раз; в Linux есть какая-то функция экономии средств "я-на-самом-деле-не-собираюсь-обновлять-потому-что-это-то-же-изображение". Чтобы заставить систему распознавать, что это каждый раз новая картинка, измените имя файла следующим образом:

#!/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}"

Связанный контент