2014-10-02 51 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

相关问题