site  contact  subhomenews

Wallpaper corruption hopefully fixed in containers

May 09, 2021 — BarryK

We have been discussing this problem here:

https://forum.puppylinux.com/viewtopic.php?f=63&t=2851

The problem reported was for XenialPup. Also getting it with Racy. XenialPup is x86_64, Racy is i686, so that is not a cause. Not getting the corruption with the newer pups and EasyOS.

Note, the tray that you see on the desktop is created by JWM, the window manager. The desktop icons and wallpaper are created by ROX-Filer, what is called the "pinboard". So ROX-Filer is not just a file manager, it is also responsible for part of what you see on the desktop.

When a pup or Easy desktop is launched in a container, JWM is started first, then ROX-Filer. Rox creates the desktop icons OK, but sometimes scrambles the wallpaper, even overwriting the desktop icons, with multiple reproductions of the icons.

There is a file, /root/Choices/ROX-Filer/PuppyPin, which may be located elsewhere in some pups, that defines the desktop icons and the wallpaper. It is an XML file, with <backdrop> tag for the wallpaper. If that tag is removed from PuppyPin, all is well, the desktop is fine in the container, desktop icons display, with a blank white background.

I am now trying a different approach. /usr/local/sfsget/dir2sfs is the script that is used to convert a folder with a pup in it, to an EasyOS-compatible SFS. Usage is described here:

https://easyos.org/dev/how-to-run-a-linux-distribution-in-a-container.html

I have rebuilt XenialPup with the changes. There are two key scripts that dir2sfs creates in the SFS, .control/xenialpup and usr/bin/desk-delayedrun. The first one starts desk-delayedrun as a separate process, then starts the window manager, in this case jwm.

desk-delayedrun does various things, including strip the <backdrop> tag out of PuppyPin, then start rox. After a short delay, the script then uses rox's RPC mechanism to set the wallpaper. This is actually done by /usr/sbin/set_bg, that is in all pups.

It is working for me, get a nice wallpaper, but as I said, it could go bad sometime in the future. Fingers crossed. If you want to try it, and already have XenialPup downloaded and installed, go to the menu "Filesystem -> Easy Container Management", choose "xenialpup" and click the button to delete it.
Then you can click "sfsget" on the desktop to download the new one -- it has a different name, 'xenialpup_7.5-r1_amd64.sfs'.

Let me know if any problem with the wallpaper, or anything else. Note, you can experiment and tweak the "sleep" values -- with xenialpup running, on the main desktop go to /mnt/wkg/containers/xenialpup/container and look at .control/xenialpup and usr/bin/desk-delayedrun. Edit, save, then kill xenial pup in the tray, then click the "xenialpup" icon to restart it.  

Tags: easy