我正在寻找一种以编程方式操作在Wine下运行的Linux程序的方法。
Linux上是否有类似于Windows SetWindowForeground
win32
命令的内容?
一个按名称将窗口设置为前台的函数,它将与在Linux上的Wine下运行的Windows程序一起使用?
答案 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 )