アプリケーションごとの透過性

提供: ArchWiki
ナビゲーションに移動 検索に移動

xterm 自動透明度ガイドに従って、xcompmgr と、または他のコンポジタtransset-dfAUR だけで、アプリケーションごとに透明度を設定することができます。xterm をお使いのプログラム名に置き換えてください:

xterm & sleep .8s && transset-df -a

Openbox のキー/マウスバインディングでは、rc.xml の中に以下を使用してください:

<execute>sh -c 'xterm & sleep .8s && transset-df -a'</execute>

この記事では、アプリケーションごとに透明度を 自動的に 設定する方法について詳しく説明しています。

透明度はデスクトップを少し見栄え良くするだけでなく、実用的な用途もあります。特に、ターミナルやテキストエディタでは、コードの断片をコピーしたり、マニュアルを読んだりするときに透明度を重ねると便利です。しかし、ブラウザや画像ビューアなどでは気が散ってしまうことがあります。

通常、xcompmgr を使ってすべてのウィンドウを透明にするか、ネイティブでサポートしているアプリケーションの特別なウィンドウを透明にすることができます(例えば、urxvt)。また、個々のウィンドウで透明度を設定するために、transset-df を使った チュートリアル も数多く存在していますが、これには開くたびに透明度を手動で設定する必要があります。

ただし、devilspie を組み合わせることで、アプリケーションごとに透明度を自動的に設定することができます。

インストール

まず、xcompmgrtransset-dfAURdevilspie がインストールされていることを確認してください。インストールされたら、xcompmgr を実行します(すでに実行している場合は不要です):

$ xcompmgr &
ノート: 引数を渡す必要はありませんが、他の効果が欲しい場合は、Xcompmgr ページをチェックしてください。代わりに、他のコンポジタが利用可能です。

設定

必要なものがインストールされたら、devilspie を設定します。基本的に、devilspie はウィンドウマッチングユーティリティとして機能します。デーモンとして実行され、特定のウィンドウに一致するルールを指定することができます。その後、そのウィンドウに関連するコマンド(通常はそのウィンドウに関連するコマンド)を実行する機能が提供されます。これは、Openbox の rc.xml と似ていますが、この場合、Openbox だけでは必要な機能を提供してくれません。

まず、~/.devilspie 内に opacity.ds ファイルを作成します(そのディレクトリが存在しない場合は作成してください):

$ mkdir -p ~/.devilspie
$ cd ~/.devilspie
$ touch opacity.ds

次に、opacity.ds ファイルに以下のような内容を記述します:

( if
( contains ( window_class ) "Gvim" )
( begin
( spawn_async (str "transset-df -i " (window_xid) " 0.85" ))
)
)

このルールでは、window_class に "Gvim" という文字列が含まれているかどうかをチェックしています。もしそうであれば、透明度を 0.85 に下げるために transset-df ユーティリティを使ってコマンドを実行します。(0 から 1 までの値が有効で、前者は完全に透明、後者は完全に不透明です。)ここでのポイントは、window_xid 変数が利用可能であり、この例での devilspie の力です。

ウィンドウの見つけ方

もう一つのコツは、目的のウィンドウをどのようにマッチさせるかです。場合によっては、window_class の代わりに application_name を使ってマッチさせることがあります。これは、devilspie がウィンドウ情報をどのように読み取るかによります。ウィンドウを特定する方法を見つけるには、ターミナルで以下のコマンドを実行します:

$ devilspie -a

その後、目的のアプリケーションを 起動 します。ターミナルには、opacity.ds ファイルで使用できる識別情報が出力されます。また、xprop を使用することもできます。

異なるアプリケーションのマッチング

これで GVim が透明になりますが、複数のアプリケーションでこれを行いたい場合があります。以下は、GVim、Mirage、および Chromium ウィンドウをすべて透明にする例の設定です。(この例から他のウィンドウを追加する方法は明らかです。)

( if
( or
( contains ( window_class ) "Gvim" )
( contains ( application_name ) "mirage" )
( contains ( application_name ) "chrome" )
)
( begin
( spawn_async (str "transset-df -i " (window_xid) " 0.85" ))
)
)

背景での使用

場合によっては、アプリケーション(特にターミナル)を背景で透明なウィンドウとして設定することが望ましいです。

この効果を得るには、設定に以下を追加してください:

~/.devilspie/opacity.ds
...
(begin
(stick)
(below)
(undecorate)
(skip_pager)
(skip_tasklist)
(wintype "dock")
...

必要に応じて、アプリケーション設定を通じてメニューバーを非表示にしたり、特定のジオメトリを定義したり、devilspie のジオメトリシンボルを追加して指定できます。

X と一緒に起動する

アプリケーションごとのウィンドウ透明度を読み込むために、X の起動スクリプト(例:~/.xinitrc)に以下を追加してください:

xcompmgr &
devilspie -a &

高度な設定

devilspie 設定ファイルの包括的なドキュメント

また、gdevilspieAUR は、devilspie の GUI 設定エディタです。