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

4
我正在寻找一种在Linux下运行Wine时以编程方式操作Windows程序的方法。是否有类似于Windows的SetWindowForeground win32命令的Linux函数?能够将一个窗口通过名称置于前台,并且能够与在Linux下运行的Wine中的Windows程序一起使用吗?Wine是否使用X11?如果是这样,我可以尝试使用这个答案,我会进行实验并回来反馈。
2个回答

2
在Linux应用程序中,窗口(包括您的Wine应用程序窗口)由您的桌面环境的窗口管理器(WM)管理。窗口管理器控制窗口的放置方式以及对窗口进行操作的控件(调整大小、最小化、最大化等)。
不幸的是,没有标准化的窗口管理器,主要桌面环境(GNOME、KDE等)已经开发了自己的窗口管理器,有些人运行独立的WM,如IceWM或更多异国情调的平铺WM等。
KDE的WM称为KWin,Gnome的是Mutter,Unity使用Compiz(我想 - 很久没用Ubuntu了)。
当WM在X会话中运行时,它可能会在内部使用X11 API来升起和降下窗口。
然而,大多数现代WM将阻止用户空间X调用弹出窗口(因为安全问题等),您需要使用WM的包装函数。我认为Wayland(无论何时可用)将具有适当的安全API,因此这不应该是一个问题。
您问题的简短答案是,您编写的任何程序都很可能需要特定于Windows Manager,并且您应该查阅您的WM文档。
长答案 - 有一个freedesktop.org标准称为扩展窗口管理器提示,我不确定不同WM符合规范的好坏(主要的像Gnome和KDE应该很好)。您感兴趣的属性是窗口状态(NET_WM_STATE)。
请参见:http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html 我希望这有所帮助 - 我对WM的了解可能已经过时,但应该能引导您走向正确的方向 - 我自GLX首次问世以来就没有真正玩过WM,以及组合(摇晃的窗户等所有爵士乐)。

嗯...谢谢,我需要重新措辞/提问我的问题,正确的问题是是否有一种方法可以在我使用的Ubuntu中为Gnome和Compiz实现这一点? - pyCthon
你可以尝试使用类似WMctrl的程序。http://www.freedesktop.org/wiki/Software/wmctrl/它在Debian中,所以应该也在Ubuntu中。 - Matt
我会给你赏金,因为你指引了我正确的方向。 - pyCthon

1
你可以使用X11窗口管理器xdotool或X窗口管理器wmctrl
考虑以下场景。在Ubuntu上运行的Wine中运行名为WordWeb Installer的MS Windows应用程序,位于工作区2中。当前工作区:1。要切换到工作区2并聚焦Wine应用程序,请执行
wmctrl -R wordweb
xdotool windowactivate $( xdotool search --name wordweb )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接