Wallpaper corruption hopefully fixed in containers
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