🔄

【Raspberry Pi 4B】デスクトップの壁紙を無理やりスライドショーにする

に公開

Raspberry Piでスライドショー

Raspberry Piのデスクトップをスライドショーにすることができたので書き残しておきます。

0. 壁紙を変更するには

Raspberry Piの壁紙はコマンドでも変更できる⋯ということを初めて知りました。

壁紙用画像は/usr/share/rpd-wallpaperに用意されています。例えばlasers.jpgという画像。

lasers.jpg
/usr/share/rpd-wallpaper/lasers.jpg

この画像を壁紙にするときは、次のコマンドを実行することになります。画像パスは相対パスではなく絶対パスにしましょう。

set walllpaper
pcmanfm --set-wallpaper=/usr/share/rpd-wallpaper/lasers.jpg

1. シェルスクリプトにする

コマンドで壁紙を変更できるということは、シェルスクリプトで壁紙を変更できるということになります。

例に、/usr/share/rpd-wallpaperにある画像をランダムに取り上げ、壁紙に設定するスクリプトを記述します。ここではslideshow.shというファイル名で保存しました。

slideshow.sh
#!/bin/bash

# 画像フォルダー
download_dir="/usr/share/rpd-wallpaper"

# jpgとpngファイル
files=("$download_dir"/*.jpg "$download_dir"/*.png)

# 無限ループ
while true; do
    # 起動直後に壁紙が変更されることを防ぐ
    sleep 600 # 10分
    # sleep 10 # 10秒

    # ランダムに選ばれた画像ファイルパス
    random_image="${files[RANDOM % ${#files[@]}]}"

    # 壁紙に設定する
    pcmanfm --set-wallpaper=$random_image
done

ファイルに実行権限を与えます。ここでは個人利用目的のため、全てのユーザーに権限を与えていることに注意。セキュリティー上好ましくはありません。

chmod 755 slideshow.sh

2. シェルスクリプトを自動実行する

https://zenn.dev/ykesamaru/articles/027a921ddcdc9e

~/.config/autostart/**.desktopのように、~/.config/autostartというフォルダーに自動実行用のファイルを作ります。ここではslideshow.desktopという名前で作成します。

但し私の環境では、隠しフォルダー~/.configの下にautostartというフォルダーは存在しなかったので、これを作るところから行いました。

# ~/.config に移動
cd ~/.config

# autostart を作る
mkdir autostart

# autostart に移動する
cd autostart

# slideshow.desktop を作る
touch slideshow.desktop

slideshow.shの絶対パスを記載します。ここでは例に、/home/ユーザー名/.config/autostart/slideshow.shとしています。

slideshow.desktop
[Desktop Entry]
Type=Application
Name=Wallpaper Slideshow
Exec=/home/ユーザー名/.config/autostart/slideshow.sh

3. 再起動

再起動します。

結果

私の環境では、これでスライドショー化できました。計測はしていませんが、多分10分くらいで切り替わっているように思います。

Discussion