如何在启动时以编程方式添加Dock图标反弹



我已经使用Wineskin很长一段时间了,最近,我一直在尝试使用CodeWeavers的Winemac.drv(或Mac驱动程序),而不是X11。主要的区别是Winemac是在Objective-C中完全编程的(包括它的Window系统),而X11方法使用X11 dylibs和.nib文件作为windows。

然而,由于Winemac仍在开发中,它在一些OSX功能上有所欠缺。脑海中的功能在Dock上跳动。弹跳有什么问题?嗯,它只是不反弹。更具体地说,在发布时。该代码以某种方式覆盖了用户的"启动应用程序时设置动画"选项,或者完全忽略了通常的应用程序启动动画。

我在Objective-C方面的经验仍然很少,所以我可能错过了苹果Mac文档库中的一些关键文档,但我的问题是:
应用程序通常可以覆盖这个选项吗?或者Wine可能就是这样?如果可以,怎么做?

编辑:我错误地指出,Mac驱动程序错过了功能,而事实是,正如Ken Thomases所提到的,Wine进程从后台开始,所以在发布时Dock上没有显示图标,这意味着没有动画

我是Wine的Mac驱动程序的开发人员。

问题是,所有Wine流程都是在Dock上不存在的情况下作为后台流程开始的。许多葡萄酒工艺都保持这种状态,因为它们从未出现任何窗口。

当Wine进程第一次显示窗口时,它会将自己从后台进程转换为前台进程。此时,它会出现在Dock和Command Tab应用程序切换器中,并获得一个主菜单栏。恰好Dock不会弹出从后台进程转换为前台进程的应用程序的图标。基本上,Dock在流程启动后就开始参与其中,而弹跳是针对正在启动的流程。

应用程序可以通过调用-[NSApplication requestUserAttention:]使其Dock图标弹出。但是,如果应用程序已经处于活动状态,则此操作不会起任何作用。此外,反弹动画具有不同的质量。它更尖锐、更紧迫,而不是放松的反弹。

基本上,在一般情况下,没有办法达到你想要的目的。可以构建一个基于脚本的应用程序包来配置环境,然后配置exec的Wine。由于该应用程序是捆绑的,并且在其Info.plist中将自己描述为一个普通的前台应用程序,因此它将立即获得一个Dock图标,该图标应该会弹出。我不完全确定从那时起,exec ed Wine将接管Dock图标。即使它适用于初始流程,由初始流程启动的任何Wine流程都将恢复到您熟悉的方式。(例如,许多游戏都有一个补丁程序/启动器,它为游戏本身启动一个辅助进程。你可能会让补丁程序/启动程序图标反弹,但这对游戏进程的图标没有帮助。)