_NET_ACTIVE_WINDOW
アクティブなウィンドウを示すルートウィンドウのプロパティ。変更依頼のメッセージには、誰が頼んだかを示す欄がある。
EWMH以前のXには「アクティブウィンドウ」という概念がなく、あるのはキーボードフォーカスだけで、どのクライアントも XSetInputFocus で動かせた。それでは足りなかった。対象が別の仮想デスクトップにあったり、アイコン化されていたり、他の3枚の下に埋もれていたりするかもしれず、見えないウィンドウにフォーカスがあっても誰もそれを「アクティブ」とは呼ばない。そこでEWMHは、ウィンドウマネージャが設定し、アクティブと見なすウィンドウのIDを保持する _NET_ACTIVE_WINDOW をルートウィンドウに置いた。無ければ None である。タスクバーはこれでボタンを強調表示し、xdotool getactivewindow は単にこの値を読み出す。
逆向きには、同名の ClientMessage をルートウィンドウに送って「このウィンドウをアクティブにせよ」と依頼する。ウィンドウマネージャはデスクトップを切り替え、アイコン化を解除し、前面に出してフォーカスを与える。あるいは断る。バージョン1.3からこのメッセージにはソース表示が付く。1はアプリケーション自身、2はユーザーに代わるページャやタスクバー、0は古くて何も知らない送り手を表す。次の欄のタイムスタンプと合わせて、フォーカス奪取防止の材料になる。パネルでのクリックは通り、文の途中で割り込みたいアプリは点滅で我慢させられる。wmctrl -a と xdotool windowactivate はまさにこのメッセージを送るので、フォーカスだけを設定して後は運任せの windowfocus とは違う。