web-dev-qa-db-ja.com

さまざまなデスクトップ環境でデスクトップの背景を更新するにはどうすればよいですか?

XFCE 4.10では、デスクトップの背景をxfdesktop --reloadで更新できます。

できるだけ多くの他のデスクトップ環境(Unity、KDE、LXDE、Mate、Cinnamon、GNOME2、GNOME3など)で同じことを行う方法を知りたいです。

5

これは、デスクトップ環境を検出し、検出されたデスクトップ環境で必要な場合に動的壁紙の背景を明示的に再読み込みするコード例です。

コードは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
3

ウィンドウマネージャーやデスクトップ環境とは関係なく、ルートウィンドウのコンテンツ(つまり背景)を設定できます。従来のユーティリティ 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

これは、デスクトップ環境の壁紙の概念に影響を与えないため、独自のコンテンツを代わりに表示する場合があります。