我们有一个(可能是?)不寻常的情况,我们有很多基于Qt 4构建的应用程序和一些用Java构建的应用程序(Swing),但我们使用的是KDE 3.我们在Red Hat Enterprise Linux上5由于没有KDE 4的官方版本,升级到KDE 4不是一个可能的选择。
我们的客户需要的项目之一就是能够在不同的桌面上打开某些应用程序。在筛选KDE 3 API之后,似乎是使用KWin :: setOnDesktop函数执行此操作的主要方法。
不幸的是,使用该功能需要链接KDE的库(libkdecore),并且您可以包含KDE 3头文件,其中包含一堆Qt 3内容。因此,我们实际上不能让任何Qt 4应用程序直接与KDE对话。
Java应用程序的问题是获取X11窗口ID是一个巨大的痛苦,因为它需要通过JNI调用。 (有一个方便的StackOverflow页面关于Java和X11交互here。)
在这种情况下,有没有人对如何在桌面之间移动窗口有任何建议?谢谢你的任何想法。
答案 0 :(得分:1)
KDE4还有一个setOnDesktop方法,可以与KDE3的KWin窗口管理器(或任何其他理智的窗口管理器)进行通信。它在KWindowSystem级。您可以在应用程序中使用它。
关键是setOnDesktop方法将使用底层X11协议来完成这项工作。应用程序是用一种技术编写的,而窗口管理器是用另一种技术编写的。