2008-10-02 6 views
7

Le lecteur flash autonome ne prend pas d'autres arguments qu'un fichier .swf lorsque vous le lancez à partir de la ligne de commande. J'ai besoin que le joueur passe en plein écran, sans bordures de fenêtre et autres. Cela peut être accompli en appuyant sur ctrl + f une fois que le programme a démarré. Je veux le faire par programmation car j'en ai besoin pour lancer en plein écran sans aucune interaction humaine.Lancement par programme d'Adobe Flash Player autonome sous Linux/X11

Je suppose que j'ai besoin d'un peu de comment obtenir un handle à la fenêtre, puis envoyez-lui un événement qui ressemble à la touche "ctrl + f".

Si cela fait une différence, il semble que flashplayer est une application gtk et j'ai python avec pygtk installé.

MISE À JOUR (la solution je ... grâce à la réponse de ypnos):

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

+1 Bonne question! :) J'ai été la recherche pendant un certain temps –

Répondre

7

Vous pouvez utiliser une application dédiée qui envoie la séquence de touches au gestionnaire de fenêtres, qui doit ensuite passer à clignoter, si la fenêtre commence comme étant la fenêtre active à l'écran. Ceci est assez sujet aux erreurs, cependant, en raison des retards entre le démarrage du flash et le moment où la fenêtre apparaîtra.

Par exemple, votre script pourrait faire quelque chose comme ceci: flashplayer * .swf sommeil 3 & & xsendkey Ctrl + F

Le xsendkey d'application peut être trouvée ici: http://people.csail.mit.edu/adonovan/hacks/xsendkey.html Sans donné une fenêtre spécifique, il l'enverra à la fenêtre racine, qui est gérée par votre gestionnaire de fenêtres. Vous pouvez également essayer de trouver l'identifiant de la fenêtre en premier, en utilisant xprop ou quelque chose qui s'y rapporte.

Une autre option est un gestionnaire de fenêtres, qui est capable de mémoriser vos paramètres et de les appliquer automatiquement. Fluxbos par exemple fournit cette fonctionnalité. Vous pouvez définir fluxbox pour rendre le décor sans fenêtre et l'étirer sur l'ensemble de l'écran, si flashplayer prend en charge le redimensionnement. Ce n'est pas aussi agréable, car cela affecterait probablement toutes les fenêtres flashplayer que vous avez ouvertes.

+0

xprop + xsendkey fait l'affaire. Je posterai ma commande de bash exacte une fois que je l'aurai tout compris et que tout ce qui est awk aura été compris pour l'automatiser. – afarnham

+1

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

+0

qui a pris du temps :) Mais merci pour le partage! – ypnos

1

Je l'ai fait faire depuis longtemps, mais ce n'était pas petite. Ce que nous avons fait est d'utiliser le Sawfish window manager et a écrit un crochet pour reconnaître la fenêtre flashplayer, puis dépouiller toutes les décorations et l'enclencher en plein écran. Cela peut être possible sans utiliser le gestionnaire de fenêtres, en enregistrant des événements de création de fenêtre X à partir d'une application externe, mais je ne suis pas assez familier avec X11 pour vous dire comment cela serait fait.

Une autre option consisterait à écrire une application pygtk incorporant le lecteur Flash autonome dans un gtk.Socket puis redimensionnée. Après un peu de réflexion, cela pourrait être votre meilleur pari.

0

Je l'ai fait à l'aide openbox en utilisant un mécanisme similaire à celui qui mentionne bmdhacks. La chose que j'ai noté de ceci était que le joueur instantané autonome a exécuté le plein écran nettement plus mauvais que le même joueur dans une fenêtre maximisée non décorée. (cela, agaçant n'est pas correctement en plein écran à cause de la barre de menu). Je me demandais à propos de l'exécuter avec un thème gtk personnalisé pour rendre le menu invisible. C'est juste un problème de performance. Si le plein écran fonctionne correctement, alors c'est compliqué. Je courais sur un OLPC XO, la performance est plus un problème là-bas.

Je n'ai pas eu beaucoup de chance avec nspluginplayer (trop bogué je pense). En fin de compte, j'ai eu le luxe de faire le flash qui fonctionnait pour que je puisse simplement placer le code dans le flash lui-même. Par un jeton similaire, puisque vous pouvez intégrer le flash dans le flash, il devrait être possible de faire un petit swf stub qui passe automatiquement en plein écran et qui contient la cible sfw.

0

Vous devez utiliser le script Acton 3 cmd:

stage.displayState = StageDisplayState.FULL_SCREEN; 

Voir Adobe Action script 3 programmation.

Mais attention: en plein écran, vous allez perdre les performances d'affichage!

J'ai ce problème ... plus sous Linux !!!

1

Une autre option serait d'écrire une application pygtk qui incorporait le lecteur flash autonome dans un gtk.Socket puis se redimensionnait. Après un peu de réflexion, cela pourrait être votre meilleur pari.

C'est exactement ce que j'ai fait. En plus de cela, mon lecteur balance le contenu flash via Xcomposite, Xfixes et Cairo. Un .deb comprenant la source de python peut être trouvé ici: http://www.crutzi.info/crutziplayer

Questions connexes