Also I noticed that anything other than worspace0 is not working from emacs -nw, also from emacs -nw I have to extract monitor and screen infos from command line (the emacs functions you sent are working only on graphic display). Here the last function I use here to test (works in emacs -nw and from all workspaces) if that help. (defun tv/change-xfce-background (file) (let* ((screen (shell-command-to-string "echo -n $DISPLAY")) (monitor (shell-command-to-string "echo -n $(xrandr | awk '/\\w* connected/ {print $1}')")) (desktop (and (display-graphic-p) (x-window-property "_NET_CURRENT_DESKTOP" nil "CARDINAL" 0 nil t))) (prop (format "/backdrop/screen%s/monitor%s/workspace%s/last-image" (substring screen (1- (length screen))) monitor (or desktop 0))) (proc (apply #'start-process "set background" nil "xfconf-query" `("-c" "xfce4-desktop" "-p" ,prop "-s" ,file)))) (set-process-sentinel proc (lambda (proc event) (if (string= event "finished\n") (message "Background changed successfully to %s" (helm-basename file)) (message "Failed to change background")))))) Po Lu writes: > Thierry Volpiatto writes: > >> Don't know where I can get that (/backdrop is not a directory). > > I meant with the `xfconf-query' program, sorry: > > xfconf-query --list --recursive --channel xfce4-desktop --property /backdrop -- Thierry