Subject: Re: bug#57781: missing wallpaper command

From: Stefan Kangas <[email-masked]>
Date: Fri, 7 Oct 2022 11:08:05 +0200

[Please use "Reply to all" so that the discussion
 is recorded in the bug tracker.]

Felix <[email-masked]> writes:

>> [2. text/x-diff; 0001-Fix-setting-the-wallpaper-with-swaybg-and-wbg.patch]...
>
> It doesn't work on my side.
> Here is the debug log
>
> Debugger entered--Lisp error: (wrong-type-argument numberp nil)
>   number-to-string(nil)
>   (and (fboundp 'x-window-property) (display-graphic-p) (number-to-string (or (x-window-property "_NET_CURRENT_DESKTOP" nil "CARDINAL" 0 nil t) (x-window-property "WIN_WORKSPACE" nil "CARDINAL" 0 nil t))))
>   (or (and (fboundp 'x-window-property) (display-graphic-p) (number-to-string (or (x-window-property "_NET_CURRENT_DESKTOP" nil "CARDINAL" 0 nil t) (x-window-property "WIN_WORKSPACE" nil "CARDINAL" 0 nil t)))) "0")
>   (cons 87 (or (and (fboundp 'x-window-property) (display-graphic-p) (number-to-string (or (x-window-property "_NET_CURRENT_DESKTOP" nil "CARDINAL" 0 nil t) (x-window-property "WIN_WORKSPACE" nil "CARDINAL" 0 nil t)))) "0"))
>   (list (cons 102 (expand-file-name file)) (cons 70 (mapconcat #'url-hexify-string (file-name-split file) "/")) (cons 104 #'(lambda nil (wallpaper--get-height-or-width "height" #'display-pixel-height wallpaper-default-height))) (cons 119 #'(lambda nil (wallpaper--get-height-or-width "width" #'display-pixel-width wallpaper-default-width))) (cons 83 (let ((display (frame-parameter (selected-frame) 'display))) (if (and display (string-match ":[0-9]+\\.\\([0-9]+\\)\\'" display)) (match-string 1 display) "0"))) (cons 77 #'wallpaper--x-monitor-name) (cons 87 (or (and (fboundp 'x-window-property) (display-graphic-p) (number-to-string (or (x-window-property "_NET_CURRENT_DESKTOP" nil "CARDINAL" 0 nil t) (x-window-property "WIN_WORKSPACE" nil "CARDINAL" 0 nil t)))) "0")))
>   (format-spec format (list (cons 102 (expand-file-name file)) (cons 70 (mapconcat #'url-hexify-string (file-name-split file) "/")) (cons 104 #'(lambda nil (wallpaper--get-height-or-width "height" #'display-pixel-height wallpaper-default-height))) (cons 119 #'(lambda nil (wallpaper--get-height-or-width "width" #'display-pixel-width wallpaper-default-width))) (cons 83 (let ((display (frame-parameter (selected-frame) 'display))) (if (and display (string-match ":[0-9]+\\.\\([0-9]+\\)\\'" display)) (match-string 1 display) "0"))) (cons 77 #'wallpaper--x-monitor-name) (cons 87 (or (and (fboundp 'x-window-property) (display-graphic-p) (number-to-string (or (x-window-property "_NET_CURRENT_DESKTOP" nil "CARDINAL" 0 nil t) (x-window-property "WIN_WORKSPACE" nil "CARDINAL" 0 nil t)))) "0"))))
>   wallpaper--format-arg("%f" "~/wallpapers/bloom.jpg")
>   (closure ((args "%f") (file . "~/wallpapers/bloom.jpg") cl-struct-wallpaper-setter-tags t) (arg) (wallpaper--format-arg arg file))("%f")
>   mapcar((closure ((args "%f") (file . "~/wallpapers/bloom.jpg") cl-struct-wallpaper-setter-tags t) (arg) (wallpaper--format-arg arg file)) ("%f"))
>   (let* ((args (if (functionp wallpaper-command-args) (funcall wallpaper-command-args) wallpaper-command-args)) (real-args (mapcar #'(lambda (arg) (wallpaper--format-arg arg file)) args)) (bufname (format " *wallpaper-%s*" (random))) (setter (and (progn (and (memq (type-of wallpaper--current-setter) cl-struct-wallpaper-setter-tags) t)) (equal (progn (or (progn ...) (signal ... ...)) (aref wallpaper--current-setter 2)) wallpaper-command) wallpaper--current-setter)) (init-action (and setter (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... setter))) (aref setter 5)))) (detach (and setter (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... setter))) (aref setter 6)))) process) (if init-action (progn (funcall init-action))) (wallpaper-debug "Using command: \"%s %s\"" wallpaper-command (string-join real-args " ")) (if detach (apply #'call-process wallpaper-command nil 0 nil real-args) (setq process (apply #'start-process "set-wallpaper" bufname wallpaper-command real-args)) (let* ((v process)) (set-process-sentinel v #'(lambda (process status) (unwind-protect (if ... ... ...) (condition-case nil ... ...)))))) process)
>   wallpaper-default-set-function("~/wallpapers/bloom.jpg")
>   funcall(wallpaper-default-set-function "~/wallpapers/bloom.jpg")
>   wallpaper-set("~/wallpapers/bloom.jpg")
>   (progn (wallpaper-set "~/wallpapers/bloom.jpg"))

Thanks.  This error was unrelated to the patch, but should now be fixed
on the master branch (commit 55bd6a5cd4).  Could you please pull latest
master, re-apply the patch, and then try again?