| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
「GKrellM」等、全てのワークスペースで表示したかったり、最大化・最小化の状態でアプリケーションを起動したい場合、 「Devil's Pie」を利用する。
インストール方法は割愛。
ちなみにUbuntuだとSynapticでインストール出来る。
「Devil's Pie」の設定
設定ファイルは
$HOME/.devilspie あるいは
/etc/devilspie
というディレクトリを作成し、その中に .ds という拡張子のファイルを記述する。
基本的な書式は
(if a b c) (begin a b c) |
となる。
ifの場合、まず a を評価し、真の場合は b を実行。
偽の場合は c を実行するが、c は省略可能。
beginの場合、a 、b、c を実行する。
また、コメントは ;; で記述する。
演算子
a の部分に記述する演算子の主なものには以下のものがある。
| 演算子 | 説明 | 例 |
|---|---|---|
| and | 後に記述するものが全て真の場合に真 | (and 真 真) … 真 (and 真 偽) … 偽 |
| or | 後に記述するものが一つでも真の場合に真 | (or 真 真) … 真 (or 真 偽) … 真 (or 偽 偽) … 偽 |
| not | 後に記述するものの否定 | (not 偽) … 真 (not 真) … 偽 |
| is | 引数1と引数2が同じであれば真 | (is "A" "A") … 真 (is "A" "B") … 偽 |
| contains | 引数1に引数2が含まれていれば真 | (contains "ABC" "AB") … 真 (contains "ABC" "BD") … 偽 |
| matches | 引数2を正規表現として引数1を評価 | (matches “foobar” ”[o]{2}b”) … 真 (matches “foobar” ”[0-9]+”) … 偽 |
属性
Window(アプリケーション)の属性等を指定することによって、それぞれのWindowを判断することが出来る。
Windowの属性の内容は設定ファイルに (debug) と記述し、「Devil's Pie」を起動すれば確認出来る。
また、後で記述するアクションでprintを利用する方法もある。
主なものは以下の通り。
| 属性 | 説明 |
|---|---|
| window_name | タイトルバーの文字列。 ただし、日本語は文字化けする。 |
| window_role | Windowの役割。 Gimp等に対して便利。 |
| application_name | アプリケーション名。 |
| window_workspace | ワークスペースの数。 |
| window_class | ウィンドウクラス。 |
| window_xid | ウィンドウID |
アクション
それぞれのWindow(アプリケーション)に対しての動作を指定する。
主なものは以下の通り。
| アクション | 説明 |
|---|---|
| debug | ウィンドウについての情報を標準出力に出力する |
| 引数の内容を標準出力に出力する。 デバッグ時に便利。 |
|
| println | 引数の内容を標準出力に出力する。 ただし、printと違い、最後に改行する。 デバッグ時に便利。 |
| geometry | ウィンドウのサイズ・位置を指定。 指定方法は、 [=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>] となる。 例: (geometry "400x300+0-22") (geometry "640x480") (geometry "+10+10") |
| fullscreen | フルスクリーンにする。 |
| focus | ウィンドウを最前面にする。 |
| center | ウィンドウを中心に移動する。 |
| maximize | ウィンドウを最大化する。 |
| maximize_vertically | ウィンドウを縦に最大化する。 |
| maximize_horizontally | ウィンドウを横に最大化する。 |
| unmaximize | ウィンドウの最大化を解除する。 |
| minimize | ウィンドウを最小化する。 |
| unminimize | 最小化したウィンドウを元に戻す。 |
| shade | ウィンドウをタイトルバーのみにする。 |
| unshade | shadeされたウィンドウを元に戻す。 |
| close | ウィンドウを閉じる。 |
| pin | 全てのワークスペースに配置する。 |
| unpin | 全てのワークスペースに配置したのを解除する。 |
| stick | 全てのビューポートに配置する。 |
| unstick | 全てのビューポートに配置したのを解除する。 |
| set_workspace | 引数に指定したワークスペースに移動する。 例:ワークスペース2に移動 (set_workspace 2) |
| set_viewport | 引数に指定したビューポートに移動する。 |
| skip_pager | ページャから隠す。 |
| skip_tasklist | タスクリストから隠す。 |
| above | 常に最前面に表示する。 |
| below | 常に最背面に表示する。 |
| undecorate | タイトルバー等を取り除く。 |
| wintype | 引数で指定したウィンドウタイプにセットする。 引数で指定出来るウィンドウタイプは以下の通り。 normal、dialog、menu、toolbar、splashscreen、utility、dock、desktop |
| opacity | ウィンドウの透過度をパーセントで指定する。 |
| spawn_sync | 引数で与えられたコマンドをフォアグラウンドで実行する。 あるプログラムを起動した時に他のプログラムも同時に起動する場合などに便利。 例:Bluefish起動時にFirefoxも起動 (if (is (window_class) "Bluefish")(spawn_async "/usr/bin/firefox")) |
| spawn_async | 引数で与えられたコマンドをフォアグラウンドで実行する。 |
設定例
「GKrellM」を全てのウィンドウに表示し、「Firefox」をワークスペース2に最大化で起動したい場合。
なお、1行目は記述する必要は無い。
Unix# vi ~/.devilspie/setwindow.ds <= 設定ファイルの作成
;;(debug) <= 実際は必要ない
(begin
(if
(is (application_name) "gkrellm")
(pin)
)
(if
(is (window_class) "Firefox-bin")
(begin
(set_workspace 2)
(maximize)
)
)
)
Unix# devilspie & <= 「Devil's Pie」の実行
|
「Devil's Pie」を起動すれば、すでに起動しているWindowに対してアクションが実行される。
スタートアップ時に「Devil's Pie」を起動すれば、新たに起動したWindowに対して即時実行されるので便利。
なお、設定を変更した場合、「Devil's Pie」を再起動する。