#!/usr/bin/env bash
#
# Sets the following:
# [org.freedesktop.DisplayManager.AccountsService]
# BackgroundFile
# [User]
# Background
# in /var/db/AccountsService/users/$USER

function setuserbackground(){
	USERBACKGROUND=$(gsettings get org.mate.background picture-filename | sed -e "s/^'//" -e "s/'$//")

	if [[ "$USERBACKGROUND" == *"home"* ]]; then
		IMAGE_NAME=$(echo "$USERBACKGROUND" | rev | cut -d "/" -f1 | rev)
		rm -f /var/lib/lightdm-data/"$(id -unr)"/*.png \
		/var/lib/lightdm-data/"$(id -unr)"/*.jpg
		cp "$USERBACKGROUND" "/var/lib/lightdm-data/$(id -unr)/"
		USERBACKGROUND="/var/lib/lightdm-data/$(id -unr)/$IMAGE_NAME"
	fi

	dbus-send --system --print-reply \
	--dest=org.freedesktop.Accounts \
	"/org/freedesktop/Accounts/User$(id -u)" \
	org.freedesktop.DBus.Properties.Set \
		string:org.freedesktop.DisplayManager.AccountsService \
		string:BackgroundFile \
		variant:string:"$USERBACKGROUND"
}

setuserbackground

dbus-monitor --profile "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/mate/desktop/background/'" |
while read -r line; do
	setuserbackground
done
