GNOME 3で定期的に壁紙を変更していますか?


15

Fedora 15をGNOME 3で使用し、Windows 7で可能なように定期的に壁紙を変更したいと思います。RSS/ Atomまたは指定されたディレクトリを使用できれば最高です。

リポジトリにツールが見つかりません。スクリプトとcronで変更できると思いますが、もっとエレガントなものを探しています。

回答:



19

次のシェルスクリプトをどこかに保存します。

#!/bin/bash

WP_DIR=/home/honeyp0t/wallpapers

cd $WP_DIR
while [ 1 ] 
  do
  set -- * 
  length=$#
  random_num=$((( $RANDOM % ($length) ) + 1)) 

  gsettings set org.gnome.desktop.background picture-uri "file://$WP_DIR/${!random_num}"

  sleep 600 
done

次に、.config / autostartのホームディレクトリで、wallpaper-changer.desktopという名前のファイルに以下を追加します。

[Desktop Entry]
Name=wallpaper-changer
Exec=/home/sammhe/bin/setbg.sh
Comment=change wallpaper every so often
Hidden=false
Type=Application
X-GNOME-Autostart-enabled=true

これにより、10分ごとに壁紙が変更されます…またはスクリプトで設定した値は…

私はもともと、OS配管工のMusingsで「GNOMEシェルのカスタマイズ」というタイトルの投稿に対するコメントとしてこれを投稿しました


リンクの壁紙またはヒューバートサムの変更については何も見つかりません。もっと具体的に教えていただけますか?
-KovBal

または、ここに書き留めてください:)(私はあなたの名前を確認しませんでした、申し訳ありません:))
KovBal

1
あなたも設定したいかもしれないことに注意する価値がありますpictures-optionsgsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
ダニエルクイン

これはgnome 2では機能しませんか?
Vicfred

「set-*」とは何ですか?
SergioAraujo

3

initスクリプトの代わりにcronジョブを使用する場合は、次のようにします。インスピレーションをくれたヒューバートに感謝します!

#!/bin/bash

walls_dir=$HOME/.wallpapers
selection=$(find $walls_dir -type f -name "*.jpg" -o -name "*.png" | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$selection"

スクリプトをどこかに保存し(例$HOME/bin/rotate_bg)、実行可能にし(chmod +x $HOME/bin/rotate_bg)、cronジョブを追加して、背景を変更したい頻度で実行します。実行crontab -ecronて、ユーザーのテーブルを編集します。crontab形式を説明するリンクを次に示します。次のエントリは、10分ごとに背景を回転します。

*0 * * * * $HOME/bin/rotate_bg

ここは間違っています。睡眠は忙しい待機ではありません
アートゲルトナー

あなたが引用を得た場合、私は私の答えを変更します
ネイサンウォレス

上でリンクしたのと同じソースから:The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days。たとえば、プロセスは呼び出されず、CPUサイクルを浪費しません。また、WikiのBusy Waitingから:Busy-waiting itself can be made much less wasteful by using a delay function (e.g., sleep()) found in most operating systems. This puts a thread to sleep for a specified time, during which the thread will waste no CPU time
Art Gertner

1

何らかの理由で、Hubert Sammに返信する方法がわかりませんが、彼のリンクは役に立ちました。ダウンした場合や、この特定の答えを得るためにすべてを読みたくない場合に備えて、Gnome 3でライブ更新のバックグラウンドを達成する方法を追加しました。

〜/ .cache / gnome-control / center / backgroundsにアクセスすると、長い名前( "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27"など)を持つファイルが見つかります。これは、背景を設定したファイルのキャッシュバージョンです。このファイルを削除し、同じ名前のシンボリックリンクを作成して置き換える場合:

$ rm a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27 
$ ln -s /path/to/original/file a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27

次に、元のファイルが更新されると、デスクトップの背景がそれを反映するように変更されます。私はこの手法を使用して、XPlanetFXのバックグラウンドが常に最新であることを確認しています。たとえば、単に「background.jpg」という画像を用意し、背景を更新するたびにこのファイルを変更します。

おそらくこれを実行するためのより正しい方法は、gsettingsを使用してpicture-uriアドレスを選択したファイルを直接指すように変更することですが、設定変更がどれだけ持続するかわからないため、symlinkオプションを選択しましたUIを使用して壁紙を変更する場合。ただし、理論的にはどちらの方法でも機能するはずです。

注:テストしなかったため、これは確かにわかりませんが、通常のUIを介して背景を変更すると、その一意の長いファイル名が変更され、シンボリックリンクが役に立たなくなる可能性があります。


1

次のシェルスクリプトをどこかに保存します。

#!/bin/bash
while true; do
file=`/bin/ls -1 $1 | sort --random-sort | head -1`;path=`readlink --canonicalize "$dir/$file"`;
gsettings set org.gnome.desktop.background picture-uri "file://"$1$path;sleep $2;done

次の構文を使用して実行します。

scriptname directoryofpictures howmanyseconds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.