Automatisch Tabs wechseln

  • Hallo Forum,

    ich will einen Raspberry pi 4 vorbereiten.

    Mein Ziel ist folgendes:

    Nach dem Boot vorgang soll der pi automatisch den Chromium Browser Starten.

    Anschließend sollen 2 Tabs geöffnet werden welche dann im 2 Minuten Takt wechseln.

    Ich habe bereits mehrere Optionen ausprobiert, verschiedenste Skripte benutzt, Extentions auf dem pi installiert, dennoch ohne jeglichen Erfolg.


    Egal ob ich xdotool installiert habe oder etwas anderes.

    Ich hänge nun schon einige Zeit an der Realisierung des Projekts, komme allerdings nicht zum Abschluss.

    Hat eventuell einer von euch einen Lösungsansatz welcher mir weiterhelfen könnte?

    Danke schonmal im voraus :)

    MfG, AJ :S

  • Ja, der Browser startet, auch beide tabs werden geöffnet.
    Nach einem Sleep command wird dann der zweite tab geöffnet.

    Danach wechselt der tab aber nicht sprich ich bleibe dauerhaft in dem zuletzt geöffneten Tab.

    Wird in deinem beispiel der erste Tab dann durch den zweiten ersetzt?


    Edit:


    Aktuell würde mein Skript so aussehen:
    #!/bin/bash


    sudo apt update
    sudo apt upgrade -y
    sudo apt install --reinstall chromium-browser unclutter -y


    xset s noblank
    xset s off
    xset -dpms


    unclutter -idle 0.5 -root &


    sed -i 's/"excited_cleanly":false/"excited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
    sed -i 's/"exited_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences


    cat << 'EOF' > /home/pi/index.html
    <!DOCTYPE html>
    <html lang="de">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kiosk Mode</title>
    <script>
    var urls = [
    "URL 1",
    "URL 2"
    ];
    var currentIndex = 0;
    function changeUrl() {
    currentIndex = (currentIndex + 1) % urls.length;
    window.location.href = urls[currentIndex];
    }
    setInterval(changeUrl, 120000); // Wechselt alle 120 Sekunden die URL
    </script>
    </head>
    <body>
    <p>Die Seite wechselt automatisch alle 2 Minuten.</p>
    </body>
    </html>
    EOF


    /usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk /home/pi/index.html &

    Edited once, last by _ajed7 (August 22, 2024 at 10:38 AM).

  • ok, war doch anders.

    Das Fenster mit dem JS muss ja da bleiben, also im Body einen IFrame fullscreen und dort die URL tauschen.


    Zwei Quellen für IFrame mit automatischem Wechsel möglich? - HTML-Seminar.de - Forum für HTML, CSS und PHP
    Hallo Leute, ich bin absoluter Laie was HTML angeht. Ich rufe ein Iframe über folgenden Code auf <iframe src="http://192.168.0.43:1880/ui/#!/8#%2F0"…
    www.html-seminar.de
  • _ajed7 Das funktioniert so natürlich nicht. Dieses JavaScript hört ja in dem Moment auf zu laufen in dem es durch die andere URL ersetzt wird. So ein Skript dass zur jeweils nächsten URL umschaltet muss es in jeder dieser Seiten geben.

    Wenn das ein JavaScript-Code bleiben soll, könntest Du mal versuchen die Seiten mit <iframe> einzubinden, statt die komplette Seite zu ändern.

    Wenn Du Quelltexte in einem Code-Block in den Beitrag einfügst, bleiben nicht nur die Einrückungen erhalten, sondern man kann auch Syntaxhervorhebung bekommen.

    sed zum bearbeiten von strukturierten Daten wie JSON ist nicht besonders robust. Für JSON gibt es beispielsweise jq. Um mal den ersten Satz von der jq-Homepage zu zitieren: „jq is like sed for JSON data“

    Edit: Der eine sed-Aufruf enthält auch einen recht offensichtlichen inhaltlichen Fehler!

    „A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP”
    — Leonard Nimoy's last tweet.

    Edited once, last by __blackjack__ (August 22, 2024 at 11:02 AM).

  • Danke für eure Vorschläge, hab nun eine Lösung gefunden. ;)


  • _ajed7 Anmerkungen zum Quelltext: Eingerückt wird per Konvention vier Leerzeichen pro Ebene.

    Man nummeriert keine Namen. Da will man entweder bessere Namen, oder gar keine Einzelnamen und -werte, sondern eine Datenstruktur. Oft eine Liste.

    Kommentare sollten dem Leser einen Mehrwert über den Code hinaus geben. Faustregel: Kommentare beschreiben nicht was der Code macht, denn das steht da ja bereits als Code, sondern warum er das (so) macht. Sofern das nicht offensichtlich ist. Wobei in der Regel offensichtlich ist was in der Dokumentation zur Programmiersprache und den verwendeten Bibliotheken steht.

    Werte aus dem Code sollten auch nicht noch mal in Kommentaren stehen. Es passiert zu leicht, dass diese Angaben im Laufe der Bearbeitung auseinander driften, und dann weiss der Leser nicht ob nun der Code oder der Kommentar fehlerhaft ist. Damit erreichen Kommentare dann das Gegenteil von dem wofür sie da sind. Also so etwas wie delay = 10  # 10 Sekunden. ist nicht gut. Die 10 steht da ja bereits im Code. Das das Sekunden sind, ist dagegen etwas was sinnvoll zu kommentieren sein kann.

    Zeichenketten und Werte mit + zusammenbasteln ist eher BASIC als Python, und auch noch mal extra unübersichtlich wenn in den Zeichenketten noch mal Zeichenketten stehen. Python hat dafür Zeichenkettenformatierung mit der format()-Methode und f-Zeichenkettenliterale.

    Ungetestet:

    „A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP”
    — Leonard Nimoy's last tweet.

  • Anschließend sollen 2 Tabs geöffnet werden welche dann im 2 Minuten Takt wechseln.

    Ist es wichtig, dass es zwei Tabs gibt, oder geht es nur darum zwei Seiten im Wechsel anzuzeigen?
    Es gibt eine HTML-Anweisung, dass nach einer gegebenen Zeit in Sekunden eine Folgeseite aufgerufen werden soll:

    Code
    <head>
    ...
    <meta http-equiv="refresh" content="120; URL=seite2.html">
    ...

    Wenn Du das entsprechend in beide Seiten einbaust, wechseln sie sich alle zwei Minuten ab.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!