January 10, 2006

wmctrl - 對符合 EWMH 的 WM 傳送命令

上週參加 [KDE@Taiwan 第二次使用者聚會] 時,[LCamel] 兄問我一個問題,他希望能在程式中,讓 Window Manager (可能是 KDE 的 kwin 或 GNOME 的 metacity,甚至是其他 WM) 可以切換到 desktop,而非一堆 stacking window。關於 Window Manager 的問題一向可以扯出許多規格,不過這個需要要達成不難,參考 EWMH (FreeDesktop 對於 ICCCM 的延伸規格:[Extended Window Manager Hints]),許多先進的 Window Manager 都部份支援了,而透過 [wmctrl] 這隻小程式,可以遞送 hints 給 WM。

以下展示在 XFCE-4.4 (採用 xfwm-4) 下運作 wmctrl 的結果:
    jserv@venux:~$ wmctrl -m
    Name: Xfwm4
    Class: xfwm4
    PID: 2948
    Window manager's "showing the desktop" mode: ON
    jserv@venux:~$ wmctrl -l
    0x00e00003 -1 venux Task List
    0x0100005b -1 venux Xfce 面板
    0x01600003  2 venux XChat: jserv-- @ FreeNode / #dot (+n)
    0x01400066  0 venux freshmeat.net: Search results - +window +manager - Firefox
    0x01e00004  0 venux rxvt-unicode
    0x02400004  0 venux root@venux: /home/jserv/jhacker/classpath
    0x01200004  2 venux rxvt-unicode
    0x01800025  0 venux Liferea
    jserv@venux:~$ wmctrl -k on
    
首先,先透過 wmctl 查詢 window manager 的資訊,稍後列出被 xfwm-4 管理的 X11 Window (此處的 "Window" 乃 resource),最後,我們要求 window manager 切換到桌面模式。

補充:可參考 Kyle Rankin 的文章 [wmctrl -- Shade, move, resize windows from a shell]。
由 jserv 發表於 January 10, 2006 01:50 PM
迴響
發表迴響









記住我的資訊?