设置在Wine下运行的Windows程序的前台窗口

时间:2014-04-25 23:31:08

标签: linux winapi window wine z-order

我正在寻找一种以编程方式操作在Wine下运行的Linux程序的方法。

Linux上是否有类似于Windows SetWindowForeground win32命令的内容? 一个按名称将窗口设置为前台的函数,它将与在Linux上的Wine下运行的Windows程序一起使用?

Doe的葡萄酒使用X11?如果是这样,我可以使用此answer,将进行实验并回圈

2 个答案:

答案 0 :(得分:2)

在Linux应用程序窗口(包括您的葡萄酒应用程序窗口)中,由桌面环境的窗口管理器(WM)管理。窗口管理器控制窗口的放置方式以及窗口上的控件(调整大小,最小化,最大化等)。

不幸的是,没有标准化的窗口管理器,主要的桌面环境(GNOME,KDE等)已经开发了自己的窗口管理器,有些人运行独立的WM,如IceWM或更具异国情调的平铺WM等。

KDE的WM被称为KWin,Gnome是Mutter,Unity使用Compiz(我认为 - 很久没有使用过Ubuntu)。

当WM在X sesion中运行时,它可能在内部使用X11 API来升高和降低窗口。

然而,大多数现代WM都会阻止用户空间X调用弹出窗口(出于安全考虑等)。您需要使用WM的包装函数。我认为Wayland(无论什么时候终于可用)都会有一个合适的安全API,所以这不应该成为一个问题。

您的问题的简短回答是您编写的任何程序可能需要特定于Windows Manager,您应该查阅WM的文档。

长答案 - 有一个名为扩展Windows管理器提示的freedesktop.org标准我不确定在不同的WM(Gnome和kDE之类的主要应该是好的)之间对规范的一致性如何。您感兴趣的属性是Window State(NET_WM_STATE)

请参阅:http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html

我希望有所帮助 - 我对WM的了解可能已经过时,但是应该引导你朝着正确的方向前进 - 自从GLX首次出现以及合成(摇摇欲坠的窗户和所有爵士乐)以来,我还没有真正玩过WM很流行。

答案 1 :(得分:1)

您可以使用X11窗口管理器xdotool或X窗口管理器wmctrl 请考虑以下情形。一个名为WordWeb Installer的MS Windows应用程序,在Ubuntu上的wine中运行于工作区2.当前工作区:1。切换到工作区2并关注wine应用程序执行
wmctrl -R wordweb
xdotool windowactivate $( xdotool search --name wordweb )