2014-10-02 53 views
1

我一直在使用Wineskin已經有很長一段時間了,而且我一直在嘗試使用比X11多CodeWeavers以上的Winemac.drv(或Mac Driver)。主要區別在於Winemac在Objective-C(包括其Window系統)中完全編程,而X11方法使用X11 dylibs和.nib文件進行窗口操作。如何以編程方式在啓動時添加Dock圖標反彈?

由於Winemac仍在開發中,但它缺少一些OS X功能*。記住的功能是在Dock上彈跳。彈跳的問題是什麼?那麼,它只是只是不反彈。更具體地說,在發射。代碼以某種方式覆蓋用戶選擇「啓動時啓動應用程序」,或者做一些完全忽略通常的應用程序啓動動畫的選項。我在Objective-C方面的經驗還很少,所以我可能錯過了蘋果Mac文檔庫的一些關鍵文檔,但我的問題是:
應用程序通常可以覆蓋這個選項,或者這可能是隻爲葡萄酒案?如果可以的話,怎麼樣?

編輯:我已經錯誤地指出,Mac驅動程序錯過了功能,現實時,正如Ken Thomases所述,Wine進程在後臺啓動,因此在啓動時沒有圖標顯示在Dock上,意味着沒有動畫

回答

2

我是Wine的Mac驅動程序的開發人員。

問題是,所有的Wine進程都是作爲後臺進程開始生活,Dock上沒有任何進程。許多Wine流程仍然如此,因爲它們從不呈現任何窗口。

Wine進程在第一次顯示窗口時,會將其自身從後臺進程轉換爲前臺進程。此時,它在Dock上和Command-Tab應用程序切換器中獲得存在,並獲得主菜單欄。只是碰巧Dock沒有反彈從後臺進程轉換到前臺進程的應用程序的圖標。基本上,在啓動過程後,Dock已經很好地融入其中,並且反彈是針對正在啓動的過程。

應用程序可以通過調用-[NSApplication requestUserAttention:]來使Dock圖標反彈。但是,如果該應用程序已經處於活動狀態,則這不起作用此外,反彈動畫具有不同的質量。它更尖銳,更緊急,而不是輕鬆的反彈。

基本上,沒有辦法達到你想要的一般情況。可以構建一個基於腳本的應用程序包來配置環境,然後配置Wine。由於該應用是捆綁在一起的,並將其作爲普通前臺應用在Info.plist中進行了描述,因此它會立即得到Dock圖標,並且該圖標應該會彈出。我不完全確定從那裏將會有什麼樣的行爲,根據exec ed葡萄酒接管Dock圖標。即使它適用於最初的流程,任何由初始流程啓動的Wine流程都會恢復到您熟悉的狀態。 (例如,很多遊戲都有一個啓動輔助進程的修補器/啓動器,你可能會得到修補器/啓動器圖標彈出,但這對遊戲進程的圖標沒有幫助。)

+0

使用' requestUserAttention'是我想要避免的,因爲就像你說的那樣,這是一個動畫,要求用戶注意。不管怎樣,我會嘗試基於腳本的應用程序方法;同樣,具有輔助可執行文件的應用程序實際上對我有利,因爲我只希望應用程序僅在第一次可執行文件啓動時反彈,並且只在應用程序完全關閉時再次動畫。 – Keyaku 2014-10-03 09:56:15

相關問題