Active Desktop 風の効果 part3: 悪魔のパイ

悪魔のパイ(Devil’s Pie)はその名の通り凶悪なツールです。

ウィンドウの Type をサクッと変更しちゃうんですから。

前回前々回の投稿で CompizXwinwrap を使用した方法を書きましたが、この悪魔のパイCompiz の「ウィンドウの配置」および「ウィンドウのルール」プラグイン+Xwinwrap の機能の一部といった印象です。(Devil’s Pie の方が古くからあるみたいですが。)

具体的には、あらかじめ指定した特定のウィンドウに対して、大きさや配置位置、スティッキーや最大化等々の状態(state)、フォーカス、タイトルバーの有無、そして Desktop や Dock といった種類(type)などを設定することが可能です。

Compiz を実行していない環境でも、指定したウィンドウのタイトルバーを取り払って壁紙のような見た目に仕上げられるばかりではなく、ウィンドウの種類(Type)を直接変更できるという Compiz に実装されていない機能があるため、その指定したウィンドウを実質的にデスクトップの背景にしてしまえます。
(Compiz のスケール・プラグインのスケールモードの背景にきちんと表示されたり、Ghost プラグインを使用しなくても右クリックで Compiz-deskmenu が表示されたりします。)

しかも、Xwinwrap のような利用可能プログラムの制限は基本的にありません。(もちろん、今回のように一般のウィンドウを壁紙のように表示するという目的に照らせば自ずとプログラムは限られてきますが、ウィンドウの制御という意味ではあらゆるプログラムのウィンドウに Devil’s Pie を利用出来ます。)

Ubuntu では Synaptic から devilspie で検索してインストールしたり、以下のコマンドでインストールすることが出来ます。

$ sudo apt-get install devilspie

また、有志によって gDevilspie という devilspie の GUI フロントエンドが作成されていて、Download ページには Ubuntu 用の deb パッケージも用意されています。

Hardy 用と記載されていますが、Intrepid での動作を確認しました。

設定は、~/.devilspie ディレクトリ下に ds 拡張子の付いたファイルとして保存されます。

まずは、前回作成した Covarage3d_bg Screenlet のウィンドウを開き、続いて gDevilspie を立ち上げます。

rule-list

追加ボタン」を押して新しいルールを作成します。

ボタンを押すと下のようなルール・エディタ画面が表示されます。

window-selector

  1. 画面の一番上にある新しいルールの名前の入力欄に「Coverage3d」と入力することにします。
  2. 次に、エディタ画面の下の方にある「Get」ボタンを押します。
  3. すると、現在開いているウィンドウの一覧を表示する画面がポップアップ表示されるので、一覧の中からルールを作成するウィンドウを選択します。ここでは、gDevilspie を起動させる前にあらかじめ開いておいた Coverage3d のウィンドウを示す Coverage3d_bgScreenlet.py を選択します。
  4. 適用」ボタンを押してウィンドウの選択画面を閉じます。

matching

Matching」タブでは、ルールを適用するウィンドウを何によって指定するのかを設定します。

  1. ウィンドウの idroleclass などが並んでいますが、今回は window_class にチェックを入れることにします。
  2. クラスを選択すると、先ほどウィンドウの選択を行った結果として、選択ウィンドウのクラス名が自動的に equal(s) 条件の部分に表示されます。これはこのままにしておくことにします。
  3. 「Matching」タブでの設定はこれで終わりなので、次に「Actions」タブを開きます。

ちなみに、equal(s) は「完全一致」条件、contain(s) は「部分一致」条件、match(es)正規表現を利用して「パターン一致」条件を記述したい場合に使用します。

それぞれの前に表示されている「does not」にチェックを入れると、「否定」条件になります。

つまり、今回の設定例は「Coverage3d_bgScreenlet.py に完全に一致するクラス名を持つウィンドウに対してこのルールを適用する」ということになります。

actions

Actions」タブでは、「Matching」タブで指定した条件に該当するウィンドウに対してどんなアクションを適用するのかを設定します。

画面の左側にアクションの一覧が表示されているので、その中から適用させたいアクションにチェックを入れていきます。

  1. アクション項目を上から順番に見ていくと、今回はウィンドウを壁紙のようにしていくので、ウィンドウのタイトルバーを取り払うために、「undecorate」にチェックを入れます。
  2. 壁紙用のウィンドウなので、ページャー(デスクトップ切替器)にウィンドウの存在を示しても邪魔なだけなので、「skip_pager」にチェック。
  3. 同じ理由でタスクバーにボタンが表示されないようにするために、「skip_tasklist」にもチェック。
  4. 次に今回一番重要な設定項目である「wintype」を選択してチェック。さらに、このアクションを選択状態にすると画面右側にドロップ・ダウンメニューが表示されるので、メニューから「desktop」を選択。
  5. ウィンドウをディスプレイの大きさにするために「geometry」を選択状態にしてチェック。画面右側にディスプレイ上でのウィンドウの角の位置(Xpositon, Ypositon)やウィンドウの高さ(height)と幅(width)を指定する入力欄に数値を入力。例えば 1440 x 900 のディスプレイの場合は上から 0, 0 , 900 , 1440 と入力。
  6. 最後に念のために「below」にチェック。

注記:
自分の環境では、「fullscreen」や「maximize」を使用してウィンドウを全画面表示にしたり最大化表示にすると、クリックした拍子に壁紙用ウィンドウの背後に他のウィンドウが隠れてしまったり、使用している Cairo-Dock に不都合が生じるため「geometry」の方を使用しています。

以上で基本的にルールの設定は終わりですが、ついでに「Raw」タブの方も見てみます。

raw

Raw」タブでは、ルールの設定ファイルとして書き出される内容がそのまま表示されています。
今回の例でいえば、~/.devilspie ディレクトリ下に Coverage3d.ds というファイル名で保存される内容がそのまま表示されています。

「Matching」タブや「Actions」タブを使用せずに、この「Raw」上で設定内容を直接記述することも可能です。

内容をチェックしたら、画面の下にある「保存」ボタンを押して新しいルールを保存します。
ボタンを押すと、ルール・エディタ画面は閉じられ、最初の画面に戻ります。

早速、ルール・リスト画面の右下にある「Start」ボタンを押して devilspie デーモンを起動させます。
デーモンを起動させると、ボタンの表示は「Start」から「Stop」に変わります。
デーモンを起動させたら、「閉じる」ボタンを押して gDevilspie の画面を閉じてかまいません。
devilspie デーモンを停止させるには、再び gDevilspie を立ち上げて「Stop」ボタンを押します。

デーモンが起動する前にすでに開かれているウィンドウに対してもルールは適用されますが、ウィンドウの大きさなどを変更するルールを適用させる場合は先にデーモンが動いていた方がよさそうに思えます。
今回の壁紙用 Screenlet ウィンドウにルールが適用されて問題がなければ、devilspie をログイン時の自動起動プログラムとして登録します。
コマンドは devilspie 、もしくは デーモン起動前にすでに開かれているウィンドウにもルールを適用したい場合、 devilspie -a という風に、-a オプションを付けます。

Devil’s Pie のルールの記述法に関する詳細についてはこちらが参考になります

なお、ウィンドウを Nautilus が描画している元々のデスクトップの背景より小さいサイズにセットした場合は、元々の背景の方をクリックするとウィンドウがその背景の背後に移ってしまう可能性があるため、以下を実行して Nautilus によるデスクトップの描画を停止させた方がよいかもしれません。

gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop false

Nautilus によるデスクトップ描画を元に戻すには以下を実行して再ログインします。

gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop true

Compiz を動かしている環境ではさらに事情が異なる可能性があります。

自分が試した限りでは、例えば Ubuntu にプリインストールされている Compiz を「外観の設定」 > 「視覚効果」を有効にして利用している場合、Devil’s Pie と Screenlet を Devil’s Pie → Screelet の順番で sleep コマンドを記述したスクリプトなどを経由させることで十分に遅らせて起動させたほうがよい感じです。

Fusion-Icon を使用して Compiz を起動させている場合は、Devil’s Pie と Screenlet を普通に自動起動に登録した上で、Fusion-Icon の起動を十分遅らせたほうがよいかもしれません。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。