Login
Immutable PageDiscussionInfoAttachments
clear/wm_devel/2013-03-08

MMA

タスクバーとの連携

そんなに簡単ではなかったのでまとめておく。

用語について

同様の機能を持つものがバーと名づけられていたりパネルと名づけられていたり色々で面倒だが、ここではまとめて「タスクバー」と呼ぶことにする。

以下、「クライアント」は「WMとタスクバー及びページャ(広義のページャ)を除くXクライアント」を指すものとする。

一般的なタスクバーの機能

WMが実装すべき機能

WMからタスクバーに提供する情報

WMはルートウィンドウや各クライアントウィンドウにプロパティを設定することでタスクバーに情報を与える。何を必須とするかはタスクバーによって違う。

仮想デスクトップ操作機能を備えたタスクバーの中には、仮想デスクトップ関係のプロパティが取得できないとそもそも起動しなかったり、仮想デスクトップ操作以外の部分が正しく動作しないものが存在する1。よって、WMが仮想デスクトップをサポートしていない場合でも仮想デスクトップ関係のプロパティを設定しておいたほうが良い。値は以下のようにしておく。

こうして「1つだけの仮想デスクトップがある」ことをタスクバーに示しておけば、とりあえずは何とかなる。

タスクバーからWMへの要求

タスクバーはWMが設定したプロパティの変更要求を送ることがある。これはタスクバーからWMへの要求を表している。例えば_NET_CURRENT_DESKTOPの変更要求は、WMに対して仮想デスクトップの切り替えを要求していることになる。要求の実体はルートウィンドウへのClientMessageとなっていて、中身は

のようなものが入っている。

WMは要求を無視しても良い(例えば、仮想デスクトップに対応していないWMは仮想デスクトップ関連の要求を全て無視するしかない)。

以下のような要求が可能になっている。

_NET_WM_STATE_HIDDENについて

単純なタスクバーであればこれくらいで十分だが、他にも色々と用意されている。

  1. pypanelとか (1)

  2. 現在の仮想デスクトップ内にあっても (2)

  3. _NET_WM_STATE_HIDDENのImplementation Noteを参照 (3)

  4. タイトルバーだけを表示すること。twmのアイコン化はこれ (4)

  5. EWMH Implementation Note "Pagers and Taskbars" (5)

  6. ICCCMでのNormalStateIconicStateか (6)

clear/wm_devel/2013-03-08 (last edited 2013-03-09 00:21:52 by clear)