各种桌面环境如何刷新桌面背景?

Ser*_*ndt 5 desktop desktop-environment

在 XFCE 4.10 中,我可以使用xfdesktop --reload.

我想知道如何为尽可能多的其他桌面环境(Unity、KDE、LXDE、Mate、Cinnamon、GNOME2、GNOME3...)做同样的事情。

Ser*_*ndt 3

下面是一个代码示例,它检测桌面环境并在检测到的桌面环境需要时显式重新加载动态壁纸背景。

该代码应适用于 GNOME 3、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
Run Code Online (Sandbox Code Playgroud)