Enhancing the Estuary Skin

  • I would like to modify the default Estuary skin to show more details about subtitles for movies.

    Before switching to LE, I hacked this on a previous Kodi installation, and without much fuss.

    For my current LE machine, though, I would like to "do it right" and have a project on GitHub, so that I can share and maintain it going forward.

    I've used GitHub for other projects, but nothing like this. Mainly, I'm not clear on what software is available on LE for managing this, e.g., it looks like git is not available on LE.

    I guess I could fork the Estuary code from https://github.com/LibreELEC/LibreELEC.tv tho I'm pretty vague on this.

    Could anybody suggest the best approach to this?

    TIA

    Edited once, last by mrob42 (July 29, 2025 at 4:08 AM).

  • Our distro packaging makes customising the skin complicated because Estuary is inside a squashfs file (SYSTEM) which is expanded into a virtual and read-only filesystem on each boot. You can clone the skin to /storage and then make changes to the clone, or you create a custom LE image that compiles the changes into the image.

    LE is minimalist so we don't have git and change management tools in the filesystem. You could add them via a Docker container if you wanted to, with a clone of the Kodi repo to e.g. /storage/xbmc.repo acting as the source of the skin and symlinks between the root folder of the Estuary skin files and /storage/.kodi/addons/skin.MyEstuary making the skin appear locally. It has the advantage of being somewhat self-contained on the device. It requires quite a bit of setup/fiddling though (and there are no guides for it) and you need to reinvent the wheel when moving to another device. If the changes are not extensive; perhaps skip "doing it right" and just clone the skin files locally and apply changes; and rinse/repeat occasionally if needed.

    The ultimate "doing it properly" is creating a custom image with the changes baked in. I have virtual machines and resources for that, and I'm using this workflow:

    Fork https://github.com/xbmc/xbmc/ to your own GitHub account. Now clone your repo locally, git remote add an 'upstream' source for the Kodi repo, and git checkout -b a local topic branch to contain commits for your skin changes. You can now make changes and git commit them to the branch, and generate diff patches using git format-patch. Over time and if required, you can git fetch upstream Kodi changes from their repo and git rebase your local branch against them, and regenerate the patches.

    Fork https://github.com/LibreELEC/LibreELEC.tv/ to your own GitHub account. now clone your repo locally, add an upstream remote for the LE repo, and checkout a local topic branch for your LE image changes. Add the diff patch(es) generated in the Kodi repo to packages/mediacentre/kodi-theme-Estuary/patches/ then commit them to the branch. You can now build a custom image that applies the diff patches to the skin. You can periodically fetch changes from our upstream repo and rebase your branch against them. and then rebuild the image.

    No idea what works best for you .. it's about time/effort/resources/skills available /shrug

  • Thanks for explaining all of this. I think I should just start with making the correct changes and then, once I have them, perhaps try the custom image approach. I usually just leave my LE machine running (e.g., it's been up for over two weeks now), so changes will persist for a while.

    I follow some of what you describe but not everything, e.g., when you say "clone the skin to /storage and then make changes to the clone" — what exactly are the steps? If I just copy the skin files, how will Kodi find them?

    More specifically, I would like to edit /usr/share/kodi/addons/skin.estuary/xml/Includes.xml, but nano tells me it's read only. I know there is no sudo on LE, so I'm unclear on how to proceed here.

  • You cannot edit the original skin files as those exist inside the read-only SYSTEM file, but you can copy (clone) the skin directory to a writeable location like /storage/.kodi/addons/skin.myskin and then edit the addon.xml file for the skin to rename it so there's no name clash between the embedded skin and your cloned one. Stop and restart Kodi (or reboot) and then enable and select the skin to be the active one. Use kodi-remote from the SSH console or kodi-send commands to reload the skin as you make/test changes.

  • More specifically, I would like to edit /usr/share/kodi/addons/skin.estuary/xml/Includes.xml, but nano tells me it's read only. I know there is no sudo on LE, so I'm unclear on how to proceed here.

    I done something like this few years ago. For a beginner probably the best approach is to copy the skin folder ("/usr/share/kodi/addons/skin.estuary") to a USB stick, use a PC to modify it as you want (if Windows - use a linux compatible editor like Notepad++), don't forget to rename it (the folder - ex: "skin.estuary_mod" and in the addon.xml - if I remember correctly), copy back to "/storage/.kodi/addons/....". Reboot, change the skin, and try if is working as you expected.

    Always is a good idea to have backup before try modifications like this...