2008-10-02 23 views
7

当您从命令行启动独立FlashPlayer时,除了.swf文件外,其他参数不会有其他参数。我需要玩家全屏,没有窗口边框等。这可以通过在程序启动后按ctrl + f来完成。我想以编程的方式执行此操作,因为我需要它在没有任何人机交互的情况下启动到全屏。以编程方式在Linux/X11上启动独立Adobe FlashPlayer

我的猜测是我需要一些如何获得窗口的句柄,然后发送一个看起来像“Ctrl + F”键盘的事件。

如果它有什么区别,它看起来像flashplayer是一个gtk应用程序,我已经与pygtk安装python。

UPDATE(我用的...感谢ypnos的回答解决方案):

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

+1好问题! :)我一直在寻找这一段时间 – 2011-05-12 19:18:12

回答

7

您可以使用专门的应用程序将按键发送到窗口管理器,如果窗口作为屏幕上的活动窗口启动,应该将窗口管理器传递给它。不过,这很容易出错,因为启动闪光和窗口显示时间会有所延迟。

例如,你的脚本可以做这样的事情: 版本的Adobe Flash * .swf文件 睡眠3 & & xsendkey控制+ F

应用xsendkey可以在这里找到:http://people.csail.mit.edu/adonovan/hacks/xsendkey.html 没有给出一个特定的窗口,它将它发送到由窗口管理器处理的根窗口。你也可以尝试先找出Window id,使用xprop或与之相关的东西。

另一种选择是窗口管理器,它可以记住您的设置并自动应用它们。 Fluxbos例如提供这个功能。如果Flashplayer支持调整大小,您可以设置fluxbox使窗口无装饰,并在整个屏幕上展开。这也不太好,因为它可能会影响你打开的所有Flash Player窗口。

+0

xprop + xsendkey的伎俩。一旦我得到它所有的管道和awk的东西,我会发布我的确切的bash命令来自动化它。 – afarnham 2008-10-03 00:36:52

1

其实我已经这样做很久以前的事,但它是不小。我们所做的就是使用Sawfish window manager并写了一个钩子来识别Flashplayer窗口,然后去除所有装饰并将其全屏显示。

这可能不使用窗口管理器,通过从外部应用程序注册X窗口创建事件,但我不熟悉X11告诉你这将如何完成。

另一种选择是编写一个pygtk应用程序,该应用程序将独立Flash Player嵌入到gtk.Socket中,然后调整其大小。经过一番思考,这可能是你最好的选择。

0

我已经使用类似的机制是bmdhacks提到了一个这样做使用OPENBOX。我从这里注意到的事情是,独立的Flash播放器在最大化的未装饰窗口中执行的全屏显示比同样的播放器差得多。 (因为菜单栏令人讨厌地不能全屏)。我想知道如何使用自定义gtk主题运行它,以使菜单不可见。这只是一个性能问题。如果全屏当前工作正常,那么这是不合情理的。我在运行OLPC XO时,性能更成为一个问题。

我对nspluginplayer没有太大的好运(我觉得太多了)。

最终我有制作正在运行的闪存的奢侈品,所以我可以简单地将代码放入闪存本身。同样的道理,既然你可以在闪光灯内嵌入闪光灯,那么应该可以做一个自动全屏闪光的小碎片swf,并包含目标sfw。

0

你必须使用阿克顿脚本3个CMD:

stage.displayState = StageDisplayState.FULL_SCREEN; 

,请参阅Adobe动作脚本编程3。

但要小心:在全屏幕中,您将失去显示性能!

我有这个问题...更多在Linux下!

1

另一种选择是编写一个pygtk应用程序,该应用程序将独立flash播放器嵌入到gtk.Socket中,然后调整其大小。经过一番思考,这可能是你最好的选择。

这正是我所做的。除此之外,我的播放器通过Xcomposite,Xfixes和Cairo缩放Flash内容。包含python源代码的.deb可以在这里找到: http://www.crutzi.info/crutziplayer