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