GNOMEでウィンドウを操作する

「GKrellM」等、全てのワークスペースで表示したかったり、最大化・最小化の状態でアプリケーションを起動したい場合、 「Devil's Pie」を利用する。

「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 ウィンドウについての情報を標準出力に出力する
print 引数の内容を標準出力に出力する。
デバッグ時に便利。
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」を再起動する。

▲ページのトップへ