2008-10-02 12 views
7

Der eigenständige Flashplayer nimmt keine anderen Argumente als eine SWF-Datei an, wenn Sie ihn über die Befehlszeile starten. Ich brauche den Player im Vollbildmodus, keine Fensterränder und so weiter. Dies kann durch Drücken von Strg + F erreicht werden, sobald das Programm gestartet wurde. Ich möchte das programmatisch so machen, dass ich es ohne menschliche Interaktion in den Vollbildmodus bringen muss.Programmgesteuertes Starten des eigenständigen Adobe flashplayer unter Linux/X11

Meine Vermutung ist, dass ich einige wie ein Griff zum Fenster bekommen muss und dann senden Sie ein Ereignis, das wie der "Strg + F" Tastenanschlag aussieht.

Wenn es einen Unterschied macht, sieht es aus wie flashplayer ist eine gtk-Anwendung und ich habe Python mit pygtk installiert.

UPDATE (die Lösung, die ich verwendet ... dank ypnos' Antwort):

./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Control+F 
+1

+1 Gute Frage! :) Ich suche seit einer Weile –

Antwort

7

Sie können eine dedizierte Anwendung verwenden, die den Tastendruck an den Fenstermanager sendet, der sie dann an den Flash-Modus weiterleiten soll, wenn das Fenster als das aktive Fenster auf dem Bildschirm gestartet wird. Dies ist jedoch ziemlich fehlerbehaftet, aufgrund von Verzögerungen zwischen dem Starten des Flash und wenn das Fenster angezeigt wird.

Zum Beispiel Ihr Skript könnte so etwas tun: Flashplayer * .swf Schlaf 3 & & xsendkey Strg + F

Die Anwendung xsendkey hier gefunden werden kann: http://people.csail.mit.edu/adonovan/hacks/xsendkey.html Ohne gegeben ein bestimmtes Fenster, es wird es an das Root-Fenster senden, das von Ihrem Fenstermanager bearbeitet wird. Sie könnten auch versuchen, zuerst die Window-ID herauszufinden, indem Sie xprop oder etwas ähnliches verwenden.

Eine andere Option ist ein Fenstermanager, der Ihre Einstellungen speichert und automatisch anwendet. Fluxbos bietet beispielsweise diese Funktion. Sie können fluxbox so einstellen, dass das Fenster ohne Dekor ausgeführt wird, und es über den gesamten Bildschirm strecken, wenn der Flashplayer die Größenänderung unterstützt. Dies ist auch nicht so nett, da es wahrscheinlich alle Flashplayer-Fenster betreffen würde, die Sie jemals geöffnet haben.

+0

xprop + xsendkey macht den Trick. Ich werde meinen exakten Bash-Befehl posten, sobald ich alles über die Piping- und Awk-Sachen herausgefunden habe, um es zu automatisieren. – afarnham

+1

./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Steuerung + F – afarnham

+0

das hat lange gedauert :) Aber danke fürs Teilen! – ypnos

1

Ich habe dies vor langer Zeit tatsächlich getan, aber es war nicht kleinlich. Was wir gemacht haben, ist die Sawfish window manager und schrieb einen Haken, um das Flashplayer-Fenster zu erkennen, dann löschte alle Dekorationen und schnappte es im Vollbildmodus.

Dies ist möglicherweise ohne Verwendung des Fenstermanagers möglich, indem Sie sich für X-Fenstererstellungsereignisse von einer externen Anwendung registrieren, aber ich bin nicht genug vertraut mit X11, um Ihnen zu sagen, wie das gemacht würde.

Eine andere Option wäre, eine pygtk-Anwendung zu schreiben, die den Standalone-Flash-Player in einen gtk.Socket einbaute und dann die Größe selbst änderte. Nach ein paar Gedanken könnte dies die beste Wette sein.

0

Ich habe dies mit openbox getan, einen ähnlichen Mechanismus zu dem einen verwenden, die bmdhacks erwähnt. Die Sache, die ich dabei bemerkte, war, dass der Standalone-Flash-Player wesentlich schlechter im Vollbildmodus lief als der gleiche Player in einem maximierten undekorierten Fenster. (das ist ärgerlich wegen der Menüleiste nicht richtig Vollbild). Ich habe mich gefragt, ob ich es mit einem benutzerdefinierten gtk-Thema ausführen soll, um das Menü unsichtbar zu machen. Das ist nur ein Leistungsproblem. Wenn Vollbild derzeit in Ordnung ist, ist es unnötig kompliziert. Ich lief auf einem OLPC XO, Performance ist dort eher ein Thema.

Ich hatte nicht viel Glück mit nspluginplayer (zu buggy denke ich).

Schließlich hatte ich den Luxus, den Blitz zu machen, der lief, damit ich einfach Code in den Blitz selbst setzen konnte. Aus ähnlichen Gründen, Da Sie Flash in Flash einbetten können, sollte es möglich sein, ein kleines Stub swf zu machen, das automatisch in den Vollbildmodus geht und das Ziel sfw enthält.

0

Sie haben Acton Skript 3 cmd verwenden:

stage.displayState = StageDisplayState.FULL_SCREEN; 

Siehe Adobe Action-Script 3-Programmierung.

Aber Vorsicht: Im Vollbildmodus verlieren Sie die Displayleistung!

Ich habe dieses Problem ... mehr unter Linux !!!

1

Eine andere Option wäre, eine pygtk-Anwendung zu schreiben, die den eigenständigen Flash-Player in eine gtk.Socket einbaute und dann die Größe selbst änderte. Nach ein paar Gedanken könnte dies die beste Wette sein.

Genau das habe ich gemacht. Darüber hinaus flashen meine Player Inhalte über Xcomposite, Xfixes und Cairo. Ein .deb einschließlich Python-Quelle finden Sie hier: http://www.crutzi.info/crutziplayer

Verwandte Themen