XFCE 4.10では、デスクトップの背景をxfdesktop --reload
で更新できます。
できるだけ多くの他のデスクトップ環境(Unity、KDE、LXDE、Mate、Cinnamon、GNOME2、GNOME3など)で同じことを行う方法を知りたいです。
これは、デスクトップ環境を検出し、検出されたデスクトップ環境で必要な場合に動的壁紙の背景を明示的に再読み込みするコード例です。
コードはGNOME3、KDE 4、Unity、XFCEで動作するはずです。他のデスクトップ環境向けのソリューションでテスト済みの回答を歓迎し、賛成票を投じます。
if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
DESKTOPENV=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/')
else
DESKTOPENV=$XDG_CURRENT_DESKTOP
fi
DESKTOPENV=${DESKTOPENV,,} # convert to lower case
case $DESKTOPENV in
'gnome') {
gsettings set org.gnome.desktop.background picture-uri file:///tmp/wallpaper.png' # GNOME 3 only
};;
'kde') {
:
};;
'unity') {
:
};;
'xfce') {
xfdesktop --reload
};;
esac
ウィンドウマネージャーやデスクトップ環境とは関係なく、ルートウィンドウのコンテンツ(つまり背景)を設定できます。従来のユーティリティ xsetroot
は、単色または白黒の画像のみをサポートします。多くの画像表示プログラムは、一般的なビットマップ形式のカラー画像をルートウィンドウにロードできます。たとえば、 xsetbg
ユーティリティfrom Xloadimage またはdisplay
ユーティリティfrom ImageMagick または GraphicsMagick 。
xsetbg /path/to/image.png
display -window root /path/to/image.png
gm display -window root /path/to/image.png
これは、デスクトップ環境の壁紙の概念に影響を与えないため、独自のコンテンツを代わりに表示する場合があります。