Eigenen Befehl als Schaltfläche hinterlegen

  • Hallo,

    ich habe eine Dualboot-Installation via P.I.N.N. mit LibreELEC und Batocera auf einem Raspberry Pi 5 am laufen.

    Standardmäßig wird in LibreELEC gebootet. Um von dort aus komfortabel in die Batocera-Installation zu gelangen, gibt es (abhängig von den Partitionen auf denen sich die einzelnen OS befinden) einen einfachen Befehl.
    Bei mir ist das reboot 8
    Diesen Befehl würde ich nun gern als Eintrag/Kachel in Kodi unter dem Hauptmenüpunkt "Spiele" platzieren.

    Wie kann das am besten bewerkstelligt werden?

    Falls relevant: Skin ist Estuary.

  • Du müsstest einfach den Befehl

    System.Exec(/path/to/script)

    Als Menüitem haben.

    Als ziel nimmst du dann eine selbstgeschriebene .sh Datei die dann den Befehl ausführt.

    Bash
    #!/bin/sh
    reboot 8;

    in deinem Fall.


    Ich würde dir als Skin den Estuary Mod V2 aus dem Kodi Repo empfehlen. Der sieht fast genauso aus aber die Hauptmenüitems kannst Du per einfacher Schaltfläche in den Einstellungen hinzufügen.

    --------------
    Guides nicht mehr verfügbar wegen Youtube unvermögen guten von schlechten Kodi Videos zu unterscheiden.

  • Falls relevant: Skin ist Estuary.

    Nur durch Änderungen am Skin.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Vorweg, meine folgenden Ausführungen sind rein theoretischer Natur, da ich zur Zeit keine LE-Installation greifbar habe.

    Bei LE (und auch CE) liegt der Standardskin auf der Systempartition und die ist schreibgeschützt. Die allererste Aktion wird daher sein, den Skin von da in das Addonverzeichnis von Kodi zu kopieren, damit man ihn bearbeiten kann. Das geht auf der Konsole (oder puTTY) nach Anmeldung auf dem gebooteten LE mit cp -R /usr/share/kodi/addons/skin.estuary /storage/.kodi/addons/. Anschliessend wird SkyBird1980 Skript installiert, welches im .config Verzeichnis landet:

    nano /storage/.config/batocera.sh. Dort werden die beiden Zeilen der Bash eingefügt/eingetippt und mit STRG+O und STRG-X gespeichert. Skript ausführbar machen: chmod a+x batocera.sh

    Wir fügen jetzt einen Button ins Ausschaltmenü ein:

    nano /storage/.kodi/addons/skin.estuary/xml/DialogButtonMenu.xml Dort geht es dann zur Zeile 19 und dort fügst Du hinter/unter <content> folgende Zeilen ein, der vorhandene Code rückt dann nach unten:

    Code
                        <item>
                            <label>Reboot to Batocera</label>
                            <onclick>System.Exec(/storage/.config/batocera.sh)</onclick>
                        </item>

    Speichern nicht vergessen (STRG+O) und Editor beenden (STRG+X), Reboot.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Vielen Dank SkyBird1980 und PvD für den pragmatischen Lösungsansatz, den ich auch sogleich ausprobiert habe.

    Ergebnis: Das funktioniert schon mal!


    Die von joschi77 vorgeschlagene Variante sieht auch vielversprechend aus. Hier sehe ich den Vorteil die Unabhängigkeit vom Skin.
    Bei der Variante über das angepasste Ausschaltmenü dürfte bei einem Update von LibreElec (und damit wahrscheinlich auch dem Standard-Skin) die Anpassung verloren gehen.


    Ich habe nun noch eine dritte Variante im Blick die mir hier sehr elegant erscheint, weil zum einen keine Abhängigkeit zum Skin bestünde, und der gewünschte Eintrag auch unter dem Menüpunkte "Spiele" auftauchen sollte.
    Und zwar indem dieses Beispiel-Addon so angepasst wird, dass es nichts anderes macht als den Befehl für den Reboot in die Batocera-Partition zu geben.
    Hier müsste ich nur wissen wie der Python-Code in der main.py für den Reboot in Partition 8 auszusehen hätte.
    Wäre das in Python möglich?

  • Bei der Variante über das angepasste Ausschaltmenü dürfte bei einem Update von LibreElec (und damit wahrscheinlich auch dem Standard-Skin) die Anpassung verloren gehen.

    Es sollte kein Problem darstellen, die geänderte "DialogButtonMenu.xml" irgendwo wegzuspeichern, bei einem Update den Estuary Skin ins Addon-Verzeichnis rüber zu kopieren und als letzten Schritt die weggespeicherte DialogButtonMenu.xml wieder raufzukopieren. Kann man sogar als Shellscript realisieren, da die Abarbeitungsschritte immer die Gleichen sind.

    Ich habe nun noch eine dritte Variante im Blick die mir hier sehr elegant erscheint, weil zum einen keine Abhängigkeit zum Skin bestünde, und der gewünschte Eintrag auch unter dem Menüpunkte "Spiele" auftauchen sollte.

    Das ist lt. addon.xml ein Videoplugin und taucht daher keinesfalls unter Spiele auf: https://github.com/romanvm/plugin…ddon.xml#L9-L11

    Neben der main.py, die Du so komplett so nicht nutzen kannst, ist dazu noch die addon.xml anzupassen.

    Hier müsste ich nur wissen wie der Python-Code in der main.py für den Reboot in Partition 8 auszusehen hätte.

    Fast genau so wie im Skin:

    Code
    import xbmc
    xbmc.executebuiltin('System.Exec(/storage/.config/batocera.sh)')

    unter der Voraussetzung, dass das Bash-Script wie oben erstellt wurde.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • game oder games ist in der addon.xml nicht vorgesehen: https://kodi.wiki/view/Addon.xml

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Es sollte kein Problem darstellen, die geänderte "DialogButtonMenu.xml" irgendwo wegzuspeichern, bei einem Update den Estuary Skin ins Addon-Verzeichnis rüber zu kopieren und als letzten Schritt die weggespeicherte DialogButtonMenu.xml wieder raufzukopieren. Kann man sogar als Shellscript realisieren, da die Abarbeitungsschritte immer die Gleichen sind.

    Nein, daran soll es natürlich nicht scheitern.
    Meine Überlegung war jetzt nur welche Lösung am komfortabelsten und gleichzeitig wartungsarmsten ist, wenn das jetzt einmal umgesetzt wird.


    Das ist lt. addon.xml ein Videoplugin und taucht daher keinesfalls unter Spiele auf: https://github.com/romanvm/plugin…ddon.xml#L9-L11

    Neben der main.py, die Du so komplett so nicht nutzen kannst, ist dazu noch die addon.xml anzupassen.

    Die addon.xml sowie die zugehörigen Ressourcen habe ich entsprechend eines anderen Spiele-Addons angepasst. Damit schaut das Optisch schon genauso aus wie ich das mir vorgestellt hatte und taucht auch unter dem Menüpunkt "Spiele" auf.

    Den Code der main.py habe ich durch die beiden Zeilen oben ersetzt. Das Bash-Script wurde entsprechend der Anleitung ja bereits zuvor erstellt und funktioniert auch wenn es über das Ausschaltmenü angesteuert wird.
    Bei der Variante über das Plugin funktioniert das Skript aber nicht. Stattdessen lande ich seltsamerweise mit dem Kodi-Dateimanager in der Batocera-Partition.

  • Und so?

    Code
    import xbmc
    xbmc.executescript('/storage/.config/batocera.sh')

    Edit: Wenn das nicht geht, muss man mit Popen arbeiten.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Aber so:

    Code
    import subprocess
    subprocess.run('/storage/.config/batocera.sh')

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Nehme mal ganz oben wieder das import xbmc zusätzlich rein. Das Modul wird zwar nicht für das Script selbst benötigt, aber eventuell pocht Kodi da drauf.

    Retour, deine Zip-Struktur ist falsch, richtig ist plugin.program.rebootbatocera.zip --> Ordner plugin.program.rebootbatocera --> addon.xml, main.py, LICENSE.txt, restliche Ordner.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

    Einmal editiert, zuletzt von PvD (4. Mai 2025 um 21:49)

  • Erhöhe mal in der Addon.xml die Versionsnummer. Scheinbar nimmt Kodi eine Version aus dem Addon-Cache. Da kannst Du auch mal reinschauen /storage/.kodi/addons/packages/ und den Inhalt löschen.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960

    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • An der ZIP-Struktur kann ich keinen Fehler erkennen.

    In dem packages-Ordner war kein Eintrag mehr. Aber irgendwo lag da wohl doch noch was im Cache. Hab Kodi nun nochmal neu gestartet und die Installation des Addons lief jetzt wieder sauber durch.

    Allerdings immernoch mit dem gleichen Verhalten wie zuletzt.


    Edit: Die Kategorie könnte das Problem sein. Auf der Informationsseite des Addons wird als Kategorie "Medienquellen" genannt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!