2008-10-02 73 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