工作空间也称为Java中的桌面

时间:2011-09-03 23:14:57

标签: java desktop x11 workspace ewmh

在发现和/或设置我的应用程序所在的桌面/工作区方面是否有任何进步(当然在Linux / Solaris下)?

2 个答案:

答案 0 :(得分:1)

在现代窗口管理器上发现/设置桌面是通过从EWMH规范(http://packages.debian.org/search?keywords=proftpd-basic&searchon=names&suite=all&section=all)读取/设置_NET_WM_DESKTOP属性来完成的

我不知道有任何整齐封装的API会公开此功能,但谷歌出现了http://code.google.com/p/ewm/source/browse/trinity/fusion-X11/trunk/src/main/java/org/fusion/x11/ewmh/NetFrameExtents.java这可能是一个开始。

答案 1 :(得分:0)

我是“NetFrmeExtents.java”所链接的项目的作者

这是我的答案:

除非现在已经实现了swing / awt,否则在纯java中很难做到,如果不是不可能的话。最简单(也是唯一?)的方法是使用JNI并通过xlib / xcb完成。但 可以做你所要求的。

有一个名为EWMH的桌面惯例可以帮助您实现所需。 您需要的基本步骤顺序是:

  1. 获取应用程序的窗口ID。为此,Google如何在awt中检索窗口句柄/窗口ID。
  2. 接下来,您需要阅读原子定义的几个“属性”。如果您不知道这是什么谷歌如何从xlib / xcb窗口中读取属性。
  3. 在EWMH中,有一个属性列出了窗口管理器定义的所有虚拟桌面。 请参阅http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2449367
  4. 在应用程序窗口中为属性设置属性,请参阅http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#id2507080到您希望应用程序所在的虚拟桌面的编号。
  5. 如果你已经完成了所有事情并且窗口管理器支持ewmh(大部分都是)它应该可以工作。