GNOME Bugzilla – Bug 106613
nautilus doesn't notice the background image has changed.
Last modified: 2008-03-14 16:42:17 UTC
Nautilus doesn't update the root window background image if it changes. I have a background image changer on a timer. Every hour or so the background image changes. Xplanet does this too. Unless the path to the background image file changes, nautilus does not update it. I started running through the nautilus and gconf code to figure out how to patch chbg and xplanet to force a root window update the background. Then I decided that it really should be nautilus that checks, ala fam or something. gthumb2 does this marvelously. If I change a picture's contents, the thumbnail updates almost instantly. In the meantime I've worked around this by scripting a symlink with a Unix seconds suffix. The symlink name changes, so gconf updates the picture.
Thanks for your bug report! This is still valid for Nautilus 2.5. regs, Chris
Nautilus uses the EelBackground class from libeel to handle background settings, and this needs to be fixed to emit settings_changed when the background changes in order to fix this. Ergo, an eel bug not a nautilus bug (but I don't have enough permissions to change it).
Created attachment 107160 [details] [review] Proposed patch against eel Moved to eel. The proposed patch will inform EelBackground and Nautilus about image changes to the image through gio file monitors. IMO, we should have used the "appearance-changed" signal, but Nautilus doesn't connect to it as of writing and I don't want to break any existing code. Note that if the image is set to a symlink, we don't monitor changes to the target. best regards, Christian Neumair
Comment on attachment 107160 [details] [review] Proposed patch against eel >+ if (image_uri != background->details->image_uri) { Shouldn't you strcmp instead of comparing pointers? (Mind you, I just lazily looked at the patch without checking the surrounding code)
> Shouldn't you strcmp instead of comparing pointers? Not in this case. It is just a protection against "ptr" being fed into a function (argument name "input") that does free (ptr); ptr = input; Of course, I could also have used the NULL-safe eel_strcmp(), but it's really not string-related. best regards, Christian Neumair
Looks good to commit.
Committed, closing. It will be included in eel 2.22.1 and later.