Squeezebox Touch Skin Selection
I'm still using a Squeezebox Touch as a digital music source (all my content is 16/44, and bits is bits...). Most of the replay system is now controlled by phone apps or automated by Home Assistant, but there was one thing that still bugged me.
Squeezeboxes are known to crash and reboot after 2^31 milliseconds (24.855 days) due to a timer processing bug in the application code. Whenever this happens, the display reverts to the default "Touchscreen" style, with small buttons and text. You have to use an IR remote control to reset it to the larger font that is more visible from the other side of the room.
This happens even if you set the desired skin to large for both Touch and Remote modes.
So being a retired software engineer, what could be more natural than spending several hours working out how to avoid doing something that takes 5 seconds once a month or so ? A further thin justification is that the Squeezebox IR remote has gone very sticky, in the way of 13 year old soft-touch plastic things, and is not nice to use.
The Squeezebox code is written in lua, and it turns out that the skin selection is a little bit of a mess, with multiple modules deciding on their own default for the skin, and storing it in both transient and non-volatile settings, so what's been set via the menu doesn't actually get honoured when the device first boots up. Rather than try to unravel all that, with whatever ordering issues it might suffer, I just hacked it as follows:
In /usr/share/jive/applets/AutoSkinApplet.lua, tell it we are using the remote skin. The "temp workaround" is already in the shipped code :)
--temp workaround, until it is resolved how to avoid self.mode being null on startup if not self.mode then -- TWMOD self.mode = touchSkin self.mode = remoteSkin end
In /usr/share/jive/applets/SqueezeboxFab4/SqueezeboxFab4Meta.lua, set the default to the remote skin.
-- TWMOD jiveMain:setDefaultSkin("WQVGAsmallSkin") jiveMain:setDefaultSkin("WQVGAlargeSkin")
This didn't work initially, because it turns out that the skin selection module also caches the default skin in its permanent settings, and uses that subsequently, rather than the actual default set by the application. So you need to delete that setting by editing the following file and removing the "skin=" clause.
# more /etc/squeezeplay/userpath/settings/SelectSkin.lua settings = {touch="WQVGAlargeSkin",skin="WQVGAlargeSkin",}#
Comments
Post a Comment