我已经使用Wineskin很长一段时间了,而且,最近,我一直在尝试使用来自CodeWeavers的Winemac.drv(或Mac驱动程序),而不是X11。主要区别在于Winemac在Objective-C(包括其Window系统)中完全编程,而X11方法使用X11 dylib和.nib文件用于Windows。
然而,由于Winemac仍处于开发阶段,它缺乏一些OS X功能*。想到的功能是在Dock上弹跳。弹跳有什么问题?好吧,它只是 只是没有反弹 。更具体地说,在发布时代码以某种方式覆盖了用户在“启动时动画制作应用程序”的选项,或者完全忽略了通常的应用程序启动动画。
我对Objective-C的经验还很少,所以我可能错过了Apple的Mac文档库中的一些关键文档,但我的问题是:
应用程序通常可以覆盖此选项,或者可能仅适用于Wine?如果他们可以,怎么样?
答案 0 :(得分:2)
我是Wine的Mac驱动程序的开发者。
问题在于,所有Wine进程都是作为后台进程开始的,而Dock上没有。许多Wine流程仍然保持这种状态,因为它们从不提供任何窗口。
当Wine进程第一次出现窗口时,它会将自身从后台进程转换为前台进程。此时,它在Dock和Command-Tab应用程序切换器中获得存在并获得主菜单栏。事实上,Dock不会反弹从后台进程转换为前台进程的应用程序的图标。基本上,Dock在流程启动后就会很好地参与进来,并且弹跳是针对正在启动的流程。
应用程序可以通过调用-[NSApplication requestUserAttention:]
使其Dock图标反弹。但是,如果应用程序已处于活动状态,则无效。此外,反弹动画具有不同的质量。它更尖锐,更紧急,而不是轻松的反弹。
基本上,没有办法达到你想要的一般情况。有可能构建一个基于脚本的应用程序包,用于配置环境,然后构建exec
的Wine。由于应用程序是捆绑在一起并在其Info.plist中将其自身描述为普通前台应用程序,因此它将立即获得Dock图标并且该图标应该反弹。就exec
ed接管Dock图标而言,我并不完全确定事情会如何表现。即使它适用于初始过程,初始过程启动的任何Wine过程也将恢复为您熟悉的方式。 (例如,许多游戏都有一个修补程序/启动程序,它会为游戏本身启动一个辅助进程。你可能会让修补程序/启动程序图标反弹,但这对游戏进程的图标没有帮助。)