ログイン
編集不可のページディスカッション情報添付ファイル

2013-03-08 23:05:17時点のリビジョン2

メッセージを消す
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は仮想デスクトップ関連の要求を全て無視するしかない)。

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

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

  1. pypanelとか (1)