webosbrew / custom-screensaver

Probably the only custom webOS screensaver you will ever need
MIT License
14 stars 10 forks source link

No signal customization #2

Open Informatic opened 2 years ago

Informatic commented 2 years ago

Surprisingly, both webOS 3.8 and webOS 6.2 (and probably everything inbetween) have very similar inputcommon qml layouts: /usr/palm/applications/com.webos.app.inputcommon/qml/TvComponent/ScreenSaver/...

We could probably inject some custom code there as well.

abjugard commented 5 months ago

I would very much be interested in this. Anyone had a look at it?

abjugard commented 5 months ago

In an attempt to remove the long text under "No Signal" on my OLED C9 I modified some QML files and made a very crude /var/lib/webosbrew/init.d/99-kill-the-text with the following contents:

#!/bin/sh

set -e -o pipefail

STR_MOUNT_TARGET="/usr/palm/applications/com.webos.app.inputcommon/qml/StringResource/ScreensaverString.qml"
STR_QML_PATH="/media/developer/mods/com.webos.app.inputcommon/qml/StringResource/ScreensaverString.qml"

if [[ ! -f "$STR_MOUNT_TARGET" ]]; then
    echo "[-] Target file does not exist: $STR_MOUNT_TARGET" >&2
    exit 1
fi

if ! findmnt "$STR_MOUNT_TARGET"; then
    mount --bind "$STR_QML_PATH" "$STR_MOUNT_TARGET"
    echo "[+] StringResource mounted succesfully" >&2
else
    echo "[~] StringResource mounted already" >&2
fi

MDL_MOUNT_TARGET="/usr/palm/applications/com.webos.app.inputcommon/qml/Model/ScreensaverModel.qml"
MDL_QML_PATH="/media/developer/mods/com.webos.app.inputcommon/qml/Model/ScreensaverModel.qml"

if [[ ! -f "$MDL_MOUNT_TARGET" ]]; then
    echo "[-] Target file does not exist: $MDL_MOUNT_TARGET" >&2
    exit 1
fi

if ! findmnt "$MDL_MOUNT_TARGET"; then
    mount --bind "$MDL_QML_PATH" "$MDL_MOUNT_TARGET"
    echo "[+] Model mounted succesfully" >&2
else
    echo "[~] Model mounted already" >&2
fi

Rebooted the TV, and also tried killing com.webos.app.inputcommon, but unfortunately the text remains. I'm thinking that there must be a compiled version of the QML files for this app, and that probably happens too early in the boot process for my changes to take effect.

Anyone have any ideas how to get the TV to use the modified QML files?