Po Lu writes: > Thierry Volpiatto writes: > >> Po Lu writes: >> >>> Thierry Volpiatto writes: >>> >>>> Here the command fails if you specify the workspace, it works only with >>>> "worspace0". >>> >>> But that's because you only have workspace 1 displayed, right? >> >> No, if emacs is on workspace0 and I use: >> "/backdrop/screen0/monitoreDP/workspace0/last-image" >> wallpaper is modified as expected. >> >> Then if emacs is on workspace2 and I use: >> "/backdrop/screen0/monitoreDP/workspace2/last-image" >> Command exit with 0 status but wallpaper is not modified, but if I use: >> "/backdrop/screen0/monitoreDP/workspace0/last-image" again (always from >> workspace2), wallpaper is modified as expected. >> >> I can verify this with this command which monitor the desktop change: >> >> xfconf-query -c xfce4-desktop -m >> >> => Commencer à surveiller le canal « xfce4-desktop » : >> >> then I go to workspace4, modify wallpaper with mouse and the usual xfce >> interface for this, go back in workspace1 an look at output: >> I have now: >> >> Commencer à surveiller le canal « xfce4-desktop » : >> >> définir: /backdrop/screen0/monitoreDP/workspace0/last-image >> >> unfortunately this command is interactive :-( > > But here is how Thunar, the XFCE file manager, sets the backdrop: > > image_path_prop = g_strdup_printf("/backdrop/screen%d/monitor%s/workspace%d/last-image", screen_nr, monitor_name, workspace); > image_style_prop = g_strdup_printf("/backdrop/screen%d/monitor%s/workspace%d/image-style", screen_nr, monitor_name, workspace); Yes, sure it is working from thunar. But here from emacs with it specified, the command output with 0 but the background is not changed unless I hardcode workspace to 0. Here the function used with its Edebug output: (defun tv/change-xfce-background (file) (let* ((screen (frame-parameter (selected-frame) 'display)) (monitor (assoc-default 'name (car (display-monitor-attributes-list)))) (desktop (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 desktop ))) (if (= (apply #'call-process "xfconf-query" nil nil nil `("-c" "xfce4-desktop" "-p" ,prop "-s" ,file)) 0) (message "Background changed successfully to %s" (helm-basename file)) (message "Failed to change background")))) Edebug: tv/change-xfce-background tv/change-xfce-background Result: # Result: ":0.0" Result: (((name . "eDP") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames #) (source . "XRandr"))) Result: ((name . "eDP") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames #) (source . "XRandr")) Result: "eDP" Result: 2 (#o2, #x2, ?\C-b) Result: ":0.0" Result: ":0.0" Result: 4 (#o4, #x4, ?\C-d) Result: 3 (#o3, #x3, ?\C-c) Result: "0" Result: "eDP" Result: 2 (#o2, #x2, ?\C-b) Result: "/backdrop/screen0/monitoreDP/workspace2/last-image" Result: call-process Result: "/backdrop/screen0/monitoreDP/workspace2/last-image" Result: "/home/thierry/backgrounds/Cyclosys.jpg" Result: ("-c" "xfce4-desktop" "-p" "/backdrop/screen0/monitoreDP/workspace2/last-image" "-s" "/home/thierry/backgrounds/Cyclosys.jpg") Result: 0 (#o0, #x0, ?\C-@) Result: t Result: "/home/thierry/backgrounds/Cyclosys.jpg" Result: "Cyclosys.jpg" Background changed successfully to Cyclosys.jpg Result: "Background changed successfully to Cyclosys.jpg" -- Thierry