web-dev-qa-db-ja.com

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回だけです。このセクションを機能させるには、毎回無意味な方法でスクリプトを修正する必要があります。

これは何が原因ですか?

3
Pavel Komarov

私は問題を見つけたと思います:ファイルに移動して右クリックし、「壁紙として設定...」と言っても、何も起こりません。だから、私はそれがファイル名が毎回変更されていないという事実だと仮定しました。 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}"
1
Pavel Komarov

Cmksが示すように、完全なURI変数を引用するか、または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}"
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}"
1
cmks