2011-09-03 25 views

回答

1

發現/設置在現代的窗口管理器,桌面將通過閱讀完成/從EWMH規範設置_NET_WM_DESKTOP屬性(http://packages.debian.org/search?keywords=proftpd-basic&searchon=names&suite=all&section=all

我不知道任何整齊的封裝API的這麼公開此功能,但谷歌出現http://code.google.com/p/ewm/source/browse/trinity/fusion-X11/trunk/src/main/java/org/fusion/x11/ewmh/NetFrameExtents.java這可能是一個開始。

+0

我發現了一種方式,使用窗口ID KD3 KWin但我發現同樣很難發現窗口ID。如何獲得_NET_VM_DESKTOP屬性? – brad12s

+0

我最終通過JIN從Xlib獲取窗口ID,然後進入KWIN操作Frame的桌面設置。 – brad12s

0

我的「NetFrmeExtents.java」

這裏proviously的鏈接項目的作者是我的答案:

很難,除非鞦韆/ AWT已經實施,如果不是不可能的純java做目前爲止。最直接的(也是唯一的)方法是使用JNI並通過xlib/xcb來完成。但它可能做你所問。

有一個名爲EWMH的桌面協定,可以幫助你想要什麼。 您需要的步驟的基本順序是:

  1. 獲取您的應用程序的窗口標識。要做到這一點谷歌如何檢索awt中的窗口句柄/窗口標識。
  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你希望你的應用程序能夠在虛擬桌面的數量。

如果你所做的一切都是正確的,窗口管理器支持EWMH(大多數人)它應該工作。