回答:
これはあなたが探しているソリューションです:
やった; 単なるテストバージョンですが、動作します!
次のシェルスクリプトをどこかに保存します。
#!/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シェルのカスタマイズ」というタイトルの投稿に対するコメントとしてこれを投稿しました。
pictures-options
:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
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 -e
しcron
て、ユーザーのテーブルを編集します。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
何らかの理由で、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を介して背景を変更すると、その一意の長いファイル名が変更され、シンボリックリンクが役に立たなくなる可能性があります。
次のシェルスクリプトをどこかに保存します。
#!/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