QVINTVS · SCRIBET

Flix2Kodi und der Kioskmodus von Kodi 17: Chrome nur halb so groß

Es kann vorkommen, dass der vom flix2kodi-Addon genutzte Browser Google Chrome im Kiosk-Modus nur halb so groß wie der Bildschirm geöffnet wird, was für den Videokonsum eher hinderlich ist. Dieser Artikel beschreibt einen Workaround für das Problem.

Es wird darüber berichtet, dass Kodi in Zukunft (endlich) in der Lage sein wird, die Inhalte von Netflix direkt in Kodi selbst anzuzeigen. Das entsprechende AddOn wird aber erst mit der noch nicht fertiggestellten Version 18 von Kodi funktionieren, was vielleicht auch gar nicht schlecht ist, weil das AddOn so noch etwas reifen kann, bevor es auf die meisten Nutzer losgelassen wird. Wer schon mit dem stabilen Kodi 17 Netflix schauen möchte, bleibt auf die herkömmliche Methode angewiesen, die darin besteht, aus Kodi heraus einen Browser (in der Regel Google Chrome) zu starten, der dann Netflix aufruft und in dem die gewünschten Inhalte dann abgespielt werden. Dazu nutzt man das AddOn flix2kodi in seinem jeweils aktuellen Fork. Ich nutze die verlinkte Variante aus dem GitHub-Repositorium von yamboo-efi in Version 0.6.9, die ich direkt von GitHub über dessen „Download ZIP“-Funktion heruntergeladen habe.

Ich nutze Kodi auf Ubuntu 16.04 (Xenial Xerus) im sog. Kiosk-Modus, d.h. starte Kodi unmittelbar vom Login Manager Lightdm aus und führe es nicht innerhalb einer Unity-Sitzung aus. Dies deshalb, weil ich die Erfahrung gemacht habe, dass der Fenstermanager von Unity ansonsten eine erhebliche Anzahl der Tastendrücke meiner Fernbedienung abfängt statt an Kodi weiterzuleiten.

Im Kiosk-Modus gibt es nun naturgemäß keinen Fenstermanager, was wiederum offenbar dazu führt, dass Chrome zumindest bei mir nicht richtig geöffnet wird. Der Browser wird aus unerfindlichen Gründen in etwa halb so groß wie der Fernsehbildschirm geöffnet. Ich war zwar nicht in der Lage, den Grund des Problems herauszufinden, jedoch habe ich einen Workaround gefunden. flix2kodi startet Chrome durch Ausführung des Skripts ~/.kodi/addons/plugin.video.flix2kodi/resources/scripts/launcher/linux/chrome.sh. In diesem Skript befindet sich folende Bedingungsklausel:

if [ $XDOTOOL -eq 0 ]; then
        # no point sleeping if xdotool is not installed.
        sleep 5
        xdotool mousemove 9999 9999 click 1
else
        echo "xdotool is not installed, can't remove cursor"
fi

xdotool(1) ist ein sehr vielseitiges Programm, welches auch über Befehle zum Verschieben von Fenstern und insbesondere auch zum Ändern der Fenstergröße verfügt. Das Anpassen der Bedingung wie folgt behebt das Problem mit dem halben Chrome:

if [ $XDOTOOL -eq 0 ]; then
        # no point sleeping if xdotool is not installed.
        sleep 5
        xdotool mousemove 9999 9999 click 1

        # Wait for window to start
        sleep 5
        wid=$(xdotool search --onlyvisible --class google-chrome)
        xdotool windowsize $wid 1920 1080
        xdotool windowmove $wid 0 0
else
        echo "xdotool is not installed, can't remove cursor"
fi

Die Idee ist, zunächst darauf zu warten, dass Chrome gestartet ist. Anschließend werden alle sichtbaren Fenster nach dem Fenster von Chrome durchsucht (Chrome erzeugt, aus welchen Gründen auch immer, einige unsichtbare Fenster, die hier nicht relevant sind). Das gefundene Fenster (genauer: die X11-ID des gefundenen Fensters) wird dann genutzt, um mithilfe von xdotool(1) das Fenster auf die Position (0|0) (linke obere Bildschirmecke) zu verschieben und es dann auf 1920x1080 Pixel zu vergrößern. Diese Größe ist die native Auflösung meines Fernsehers und entspricht Full HD. Wer eine andere Auflösung benutzt, muss den Befehl entsprechend anpassen (oder gleich die aktive Auflösung aus xrandr(1) auslesen, um das Skript generisch zu halten).

Nach dem Abspeichern und einem Neustart von Kodi sollte Chrome nun nach etwa fünf Sekunden in einen echten Vollbildmodus wechseln.

Diese Lösung ist leider nicht optimal, da das Skript chrome.sh beim nächsten Update von flix2kodi wieder überschrieben wird und neu angepasst werden muss. Ich habe aber bisher noch keine Möglichkeit gefunden, ein eigenes Startskript zu verwenden.

Valete.