0

我们有一个(也许?)不寻常的情况,我们有很多基于 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 调用。(这里有一个关于 Java 和 X11 交互的方便的 StackOverflow 页面。)

有人对在这种情况下如何在桌面之间移动窗口有任何建议吗?感谢您的任何想法。

4

1 回答 1

1

KDE4 还有一个 setOnDesktop 方法,可以与 KDE3 的 KWin 窗口管理器(或任何其他健全的窗口管理器)对话。它在KWindowSystem类中。您可以在您的应用程序中使用它。

关键是 setOnDesktop 方法将使用底层 X11 协议来完成这项工作。应用程序是用一种技术编写的,而窗口管理器是用另一种技术编写的,这并不重要。

于 2010-04-07T16:14:12.023 回答