Picom
Compton は軽量なスタンドアロン型のコンポジットマネージャです。コンポジット機能が含まれていないウィンドウマネージャを使っている場合に向いています。Compton は xcompmgr-dana のフォークですが、xcompmgr-dana は xcompmgr のフォークです。詳しい情報は compton の github ページ を見て下さい。
Compton は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。
インストール
compton をインストールしてください。git 版を使う場合、compton-gitAUR をインストールしてください。
使用方法
Compton はいつでも手動で有効化・無効化することができます。また、バックグラウンドで自動起動 (デーモン) することも可能です。また、コンポジット効果を設定できる任意の引数もあります。引数の一部:
-b
: バックグラウンドプロセス (デーモン) で実行 (例: Openbox などのウィンドウマネージャで自動起動する場合)-c
: 影効果を有効化-C
: パネルとドックの影効果を無効化-G
: アプリケーションウィンドウとドラッグアンドドロップオブジェクトの影効果を無効化--config
: 指定した設定ファイルを使用
他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは Compton Man Page を見て下さい。
自動起動
compton をデーモンとして自動起動させる方法は使っているデスクトップ環境やウィンドウマネージャによります。例えば、Openbox の場合 ~/.config/openbox/autostart
ファイルを編集する必要があります。i3 の場合 ~/.i3/config
ファイルを使います。必要であれば、xprofile や xinitrc から compton を自動起動することもできます。詳細は自動起動の記事を見て下さい。
コマンドを使う
セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用:
$ compton
また、影効果を全て無効化するには、-C
と -G
引数を追加します:
$ compton -CG
バックグラウンドプロセス (デーモン) として compton を自動起動するには、-b
引数を使います:
compton -b
デーモンプロセスの影効果を全て無効化するには、-C
と -G
引数を追加:
compton -CGb
以下は引数を追加して必要な値を設定した例です:
compton -cCGfF -o 0.38 -O 200 -I 200 -t 0 -l 0 -r 3 -D2 -m 0.88
設定ファイルを使う
デフォルトの設定は /etc/xdg/compton.conf
にあります。 ~/.config/compton.conf
や ~/.compton.conf
にコピーしてカスタマイズできます。
compton でカスタム設定ファイルを使うには、次のコマンドを使用:
compton --config path/to/compton.conf
バックグラウンドプロセス (デーモン) として compton を自動起動するには、-b
引数を使います:
compton --config path/to/compton.conf -b
一部ウィンドウの影を無効化
compton が影を描画することによって、一部のアプリケーションでは見た目がおかしくなってしまうことがあります。shadow-exclude
オプションで compton の影を無効にできます。
例えば GTK+3 のウィンドウで Compton の影を無効にするには、以下の設定を compton.conf
の shadow-exclude
に追加してください:
"_GTK_FRAME_EXTENTS@:c"
conky のウィンドウの影を無効化するには、以下のように conky の設定ファイル ~/.conkyrc
を修正してください:
own_window_class conky
そして以下のように compton の設定ファイルを修正してください:
shadow-exclude = "class_g = 'conky'";
無効化されるウィンドウについては こちら を参照。
マルチディスプレイ
xinerama を使わずにマルチディスプレイの設定をしている場合 (複数のスクリーンで X サーバーを実行している場合)、デフォルトでは compton は一つのスクリーンでしか起動しません。-d
引数を使うことで全てのスクリーンで実行させることができます。例えば、4つモニターがある場合に compton を起動するときは次のコマンドを使用します:
seq 0 3 | xargs -l1 -I@ compton -b -d :0.@
トラブルシューティング
他のアプリケーションやプログラムで正しい設定をしていない場合、コンポジット効果を有効にすることで外観がおかしくなる問題が発生することがあります。
Slock
インアクティブウィンドウの透過を有効にしている場合 (コマンドで実行している場合 -i
引数)、slock を使っているときに問題が発生します。透過度を 0.2
にすることで解決します。例えばコマンドで compton を実行する場合:
$ compton <any other arguments> -i 0.2
または、設定ファイルを使う場合:
inactive-dim = 0.2;
もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。
名前がないウィンドウを全て compton から除外するには:
$ compton <other arguments> --focus-exclude "! name~="
次のコマンドを実行することで slock のウィンドウ id を確認できます:
$ xwininfo & slock
画面の何処かを (slock が終了する前に) 素早くクリックして、パスワードを入力してロックを解除してください。以下のようにウィンドウ id が出力されます:
xwininfo: Window id: 0x1800001 (has no name)
取得できたウィンドウ id を使って compton から除外するには:
$ compton <any other arguments> --focus-exclude 'id = 0x1800001'
もしくは、設定ファイルを使う場合:
focus-exclude = "id = 0x1800001";
dwm のステータスバーは compton の関数から検出されず、自動的にウィンドウマネージャのエレメントが除外されることはありません。また、dwm のステータスバーと dmenu のどちらもウィンドウ id は固定されていません。ステータスバーがウィンドウ透過しないようにしたい場合、ソースコードのウィンドウクラスにパッチをあてるか、他の属性を使って除外してください。dmenu と dwm のステータスバーを上部に表示している場合、位置によって指定することができます:
$ compton <any other arguments> --focus-exclude "x = 0 && y = 0 && override_redirect = true"
もしくは、設定ファイルを使う場合:
focus-exclude = "x = 0 && y = 0 && override_redirect = true";
上書きリダイレクトプロパティは大抵のウィンドウでは false になっています。それによって左下に配置された他のウィンドウが除外されることを防げます (例えば、dwm ステータスバーが非表示になった場合、x0 y0 は dwm のマスタースタックにある全てのウィンドウにマッチします)。
xsetroot で背景色が変えられない
現在、compton は xsetroot
の -solid
オプションと互換性がありません。解決方法としては hsetrootAUR を使って背景色を設定するようにしてください:
$ hsetroot -solid '#000000'
詳しくは https://github.com/chjj/compton/issues/162 を参照。
AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する
次の引数を付けて compton を起動するか:
--backend xrender
compton.conf
ファイルに以下を追加してください:
backend = "xrender";
詳しくは https://github.com/chjj/compton/issues/208 を参照。
nvidia ドライバーを使っている場合に CPU 消費量が跳ね上がる
--backend glx
を使用した場合に CPU の使用量が高くなったり --vsync
を有効にしているとティアリングが発生する場合、NVIDIA に書かれているように nvidia-libgl をインストールしてください。
nvidia ドライバーを使っている場合にデーモン化しようとするとエラーが発生する
compton をバックグラウンドで起動しようとすると main(): Failed to create new session.
エラーが表示される場合 compton-garnetius-gitAUR を使ってください。上流にマージされていないパッチが当てられています。
xft フォントを使用した場合にラグが発生する
xterm や urxvt などのアプリケーションで Xft フォントを使用した場合に酷いラグが発生する場合、以下のオプションを使ってみてください:
--xrender-sync --xrender-sync-fence
もしくは xrender バックエンドを使ってみてください。
詳しくは [1] を参照。