「Picom」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(同期)
(3人の利用者による、間の7版が非表示)
1行目: 1行目:
 
[[Category:X サーバー]]
 
[[Category:X サーバー]]
 
[[Category:視覚効果]]
 
[[Category:視覚効果]]
[[en:Compton]]
+
[[en:Picom]]
  +
[[ko:Compton]]
 
[[ru:Compton]]
 
[[ru:Compton]]
  +
[[zh-hans:Compton]]
Compton は軽量なスタンドアロン型のコンポジットマネージャです。コンポジット機能が含まれていない[[ウィンドウマネージャ]]を使っている場合に向いています。Compton は [http://oliwer.net/xcompmgr-dana/ xcompmgr-dana] のフォークですが、xcompmgr-dana は [[xcompmgr]] のフォークです。詳しい情報は [https://github.com/chjj/compton compton の github ページ] を見て下さい。
 
  +
[https://github.com/yshui/picom Picom] は軽量なスタンドアロン型のコンポジットマネージャです。コンポジット機能が含まれていない [[Xorg]] の[[ウィンドウマネージャ]]を使っている場合に向いています。Picom は [https://github.com/chjj/compton/ compton] のフォークであり、compton は [http://oliwer.net/xcompmgr-dana/ xcompmgr-dana] のフォークですが、xcompmgr-dana は [[xcompmgr]] のフォークです。
   
Compton は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。
+
Picom は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。
   
 
== インストール ==
 
== インストール ==
   
{{Pkg|compton}} をインストールしてください。[[git]] 版を使う場合、{{AUR|compton-git}} をインストールしてください。
+
{{Pkg|picom}} パッケージをインストールしてください。[[git]] 版を使う場合、{{AUR|picom-git}} をインストールしてください。また、[[Qt]] ベースの設定 GUI を {{AUR|compton-conf}} または {{AUR|compton-conf-git}} をインストールすることで使うことができます
  +
  +
== 設定 ==
  +
  +
デフォルトの設定は {{ic|/etc/xdg/picom.conf}} にあります。 {{ic|~/.config/picom.conf}} や {{ic|~/.config/picom/picom.conf}}、{{ic|~/.picom.conf}} にコピーしてカスタマイズできます。
  +
  +
picom でカスタム設定ファイルを使うには、次のコマンドを使用:
  +
  +
$ picom --config ''path/to/''picom.conf
  +
  +
=== 一部ウィンドウの影を無効化 ===
  +
  +
picom が影を描画することによって、一部のアプリケーションでは見た目がおかしくなってしまうことがあります。{{ic|shadow-exclude}} オプションで picom の影を無効にできます。現在無効になっているウィンドウについては [https://projects.archlinux.org/svntogit/community.git/tree/trunk/compton.conf?h=packages/compton#n80] を見てください。
  +
  +
メニューの影を無効化するには {{ic|picom.conf}} wintypes に以下を追加してください:
  +
  +
# menu = { shadow = false; };
  +
dropdown_menu = { shadow = false; };
  +
popup_menu = { shadow = false; };
  +
utility = { shadow = false; };
  +
  +
=== 透過 ===
  +
  +
選択・非選択ウィンドウの透過率を設定するには、以下を {{ic|picom.conf}} に追加 (例: ターミナルエミュレータ):
  +
  +
opacity-rule = [
  +
"90:class_g = 'URxvt' && focused",
  +
"60:class_g = 'URxvt' && !focused"
  +
];
  +
  +
[[#タブ化したウィンドウ (影と透過)]]も見てください。
   
 
== 使用方法 ==
 
== 使用方法 ==
  +
Compton はいつでも手動で有効化・無効化することができます。また、バックグラウンドで自動起動 ([[デーモン]]) することも可能です。また、コンポジット効果を設定できる任意の引数もあります。引数の一部:
 
  +
Picom はいつでも手動で有効化・無効化することができます。また、バックグラウンドで自動起動 ([[デーモン]]) することも可能です。また、コンポジット効果を設定できる任意の引数もあります。引数の一部:
   
 
* {{ic|-b}}: バックグラウンドプロセス ([[デーモン]]) で実行 (例: [[Openbox]] などの[[ウィンドウマネージャ]]で自動起動する場合)
 
* {{ic|-b}}: バックグラウンドプロセス ([[デーモン]]) で実行 (例: [[Openbox]] などの[[ウィンドウマネージャ]]で自動起動する場合)
20行目: 53行目:
 
* {{ic|--config}}: 指定した設定ファイルを使用
 
* {{ic|--config}}: 指定した設定ファイルを使用
   
他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは [https://github.com/chjj/compton/blob/master/man/compton.1.asciidoc Compton Man Page] を見て下さい。
+
他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは {{man|1|picom}} を見て下さい。
 
{{Note|他の[[コンポジットマネージャ]]が動作している場合、''compton'' を起動する前に無効化してください。}}
 
   
  +
{{Note|他の[[コンポジットマネージャ]]が動作している場合、''picom'' を起動する前に無効化してください。}}
=== 自動起動 ===
 
compton を[[デーモン]]として自動起動させる方法は使っている[[デスクトップ環境]]や[[ウィンドウマネージャ]]によります。例えば、[[Openbox]] の場合 {{ic|~/.config/openbox/autostart}} ファイルを編集する必要があります。[[i3]] の場合 {{ic|~/.i3/config}} ファイルを使います。必要であれば、[[xprofile]] や [[xinitrc]] から compton を自動起動することもできます。詳細は[[自動起動]]の記事を見て下さい。
 
   
=== コマンドを使う ===
 
 
セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用:
 
セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用:
   
$ compton
+
$ picom
   
 
また、影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加します:
 
また、影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加します:
   
$ compton -CG
+
$ picom -CG
   
バックグラウンドプロセス ([[デーモン]]) として compton を自動起動するには、{{ic|-b}} 引数を使います:
+
バックグラウンドプロセス ([[デーモン]]) として picom を自動起動するには、{{ic|-b}} 引数を使います:
   
compton -b
+
$ picom -b
   
 
[[デーモン]]プロセスの影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加:
 
[[デーモン]]プロセスの影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加:
   
compton -CGb
+
$ picom -CGb
   
 
以下は引数を追加して必要な値を設定した例です:
 
以下は引数を追加して必要な値を設定した例です:
   
compton -cCGfF -o 0.38 -O 200 -I 200 -t 0 -l 0 -r 3 -D2 -m 0.88
+
$ picom -cCGfF -o 0.38 -O 200 -I 200 -t 0 -l 0 -r 3 -D2 -m 0.88
   
  +
== マルチディスプレイ ==
=== 設定ファイルを使う ===
 
  +
xinerama を使わずに[[マルチディスプレイ]]の設定をしている場合 (複数のスクリーンで X サーバーを実行している場合)、デフォルトでは picom は一つのスクリーンでしか起動しません。{{ic|-d}} 引数を使うことで全てのスクリーンで実行させることができます。例:
   
  +
picom -b -d :0
デフォルトの設定は {{ic|/etc/xdg/compton.conf}} にあります。 {{ic|~/.config/compton.conf}} や {{ic|~/.compton.conf}} にコピーしてカスタマイズできます。
 
   
  +
上記のコマンドでうまくいかない場合、以下のように手動でスクリーンを指定するコマンドを試してみてください:
compton でカスタム設定ファイルを使うには、次のコマンドを使用:
 
   
  +
seq 0 3 | xargs -l1 -I@ picom -b -d :0.@
compton --config ''path/to/compton.conf''
 
   
  +
== トラブルシューティング ==
バックグラウンドプロセス ([[デーモン]]) として compton を自動起動するには、{{ic|-b}} 引数を使います:
 
  +
最近のバージョンの picom には DRI2 アクセラレーションに問題があり、DRI2 を使っているときにちらつきが発生していました ([https://github.com/yshui/picom/issues/47 picom バグ], [https://bugs.freedesktop.org/show_bug.cgi?id=108651 mesa バグ])。対処策によって問題は解決していますが、一部のユーザーにはまだ問題が残っているという報告があります。DRI3 にはこのような問題はありません。
   
  +
他のアプリケーションやプログラムで正しい設定をしていない場合、コンポジット効果を有効にすることで外観がおかしくなる問題が発生することがあります。
compton --config ''path/to/compton.conf'' -b
 
   
  +
=== Conky ===
==== 一部ウィンドウの影を無効化 ====
 
   
  +
[[Conky]] のウィンドウの影を無効化するには、{{ic|~/.conkyrc}} に以下を記述します:
compton が影を描画することによって、一部のアプリケーションでは見た目がおかしくなってしまうことがあります。{{ic|shadow-exclude}} オプションで compton の影を無効にできます。
 
   
  +
own_window_class conky
例えば GTK+3 のウィンドウで Compton の影を無効にするには、以下の設定を {{ic|compton.conf}} の {{ic|shadow-exclude}} に追加してください:
 
"_GTK_FRAME_EXTENTS@:c"
 
   
  +
=== dwm と dmenu===
[[conky]] のウィンドウの影を無効化するには、以下のように conky の設定ファイル {{ic|~/.conkyrc}} を修正してください:
 
   
  +
dwm のステータスバーは picom の関数から検出されず、自動的にウィンドウマネージャのエレメントが除外されることはありません。また、dwm のステータスバーと dmenu のどちらもウィンドウ id は固定されていません。ステータスバーがウィンドウ透過しないようにしたい場合、ソースコードのウィンドウクラスにパッチをあてるか、他の属性を使って除外してください。dmenu と dwm のステータスバーを上部に表示している場合、位置によって指定することができます:
own_window_class conky
 
  +
$ picom <any other arguments> --focus-exclude "x = 0 && y = 0 && override_redirect = true"
   
て以下のように compton の設定ファイルを修正してください:
+
くは、設定ファイルを使う場合:
  +
focus-exclude = "x = 0 && y = 0 && override_redirect = true";
   
  +
上書きリダイレクトプロパティは大抵のウィンドウでは false になっています。それによって左下に配置された他のウィンドウが除外されることを防げます (例えば、dwm ステータスバーが非表示になった場合、x0 y0 は dwm のマスタースタックにある全てのウィンドウにマッチします)。
shadow-exclude = "class_g = 'conky'";
 
   
  +
=== Firefox ===
無効化されるウィンドウについては [https://projects.archlinux.org/svntogit/community.git/tree/trunk/compton.conf?h=packages/compton#n80 こちら] を参照。
 
   
  +
[[#一部ウィンドウの影を無効化]]を見てください。
== マルチディスプレイ ==
 
xinerama を使わずに[[マルチディスプレイ]]の設定をしている場合 (複数のスクリーンで X サーバーを実行している場合)、デフォルトでは compton は一つのスクリーンでしか起動しません。{{ic|-d}} 引数を使うことで全てのスクリーンで実行させることができます。例えば、4つモニターがある場合に compton を起動するときは次のコマンドを使用します:
 
   
  +
Firefox の部品の影を無効化するには {{ic|picom.conf}} の shadow-exclude に以下を追加します:
seq 0 3 | xargs -l1 -I@ compton -b -d :0.@
 
   
  +
"class_g = 'Firefox' && argb",
== トラブルシューティング ==
 
  +
他のアプリケーションやプログラムで正しい設定をしていない場合、コンポジット効果を有効にすることで外観がおかしくなる問題が発生することがあります。
 
  +
詳しくは [https://github.com/chjj/compton/issues/201#issuecomment-45288510] を参照。
   
 
=== Slock ===
 
=== Slock ===
インアクティブウィンドウの透過を有効にしている場合 (コマンドで実行している場合 {{ic|-i}} 引数)、[[アプリケーション一覧/セキュリティ#スクリーンロック|slock]] を使っているときに問題が発生します。透過度を {{ic|0.2}} にすることで解決します。例えばコマンドで compton を実行する場合:
+
インアクティブウィンドウの透過を有効にしている場合 (コマンドで実行している場合 {{ic|-i}} 引数)、[[アプリケーション一覧/セキュリティ#スクリーンロック|slock]] を使っているときに問題が発生します。透過度を {{ic|0.2}} にすることで解決します。例えばコマンドで picom を実行する場合:
   
$ compton <any other arguments> -i 0.2
+
$ picom <any other arguments> -i 0.2
   
 
または、設定ファイルを使う場合:
 
または、設定ファイルを使う場合:
96行目: 128行目:
 
もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。
 
もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。
 
{{note|プログラムによっては新しいインスタンスを起動するたびに id を変化させるものもありますが、slock の id は固定されています。}}
 
{{note|プログラムによっては新しいインスタンスを起動するたびに id を変化させるものもありますが、slock の id は固定されています。}}
名前がないウィンドウを全て compton から除外するには:
+
名前がないウィンドウを全て picom から除外するには:
$ compton <other arguments> --focus-exclude "! name~=''"
+
$ picom <other arguments> --focus-exclude "! name~=''"
 
次のコマンドを実行することで slock のウィンドウ id を確認できます:
 
次のコマンドを実行することで slock のウィンドウ id を確認できます:
 
$ xwininfo & slock
 
$ xwininfo & slock
 
画面の何処かを (slock が終了する前に) 素早くクリックして、パスワードを入力してロックを解除してください。以下のようにウィンドウ id が出力されます:
 
画面の何処かを (slock が終了する前に) 素早くクリックして、パスワードを入力してロックを解除してください。以下のようにウィンドウ id が出力されます:
 
xwininfo: Window id: 0x1800001 (has no name)
 
xwininfo: Window id: 0x1800001 (has no name)
取得できたウィンドウ id を使って compton から除外するには:
+
取得できたウィンドウ id を使って picom から除外するには:
$ compton <any other arguments> --focus-exclude 'id = 0x1800001'
+
$ picom <any other arguments> --focus-exclude 'id = 0x1800001'
 
もしくは、設定ファイルを使う場合:
 
もしくは、設定ファイルを使う場合:
 
focus-exclude = "id = 0x1800001";
 
focus-exclude = "id = 0x1800001";
   
=== dwm と dmenu===
+
=== ちらつき ===
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 のマスタースタックにある全てのウィンドウにマッチします)。
 
   
  +
デフォルトの {{ic|picom.conf}} を使っているときに最大化されたウィンドウでちらつきが発生する場合、以下のオプションで解決できます:
=== xsetroot で背景色が変えられない ===
 
現在、compton は {{ic|xsetroot}} の {{ic|-solid}} オプションと互換性がありません。解決方法としては {{aur|hsetroot}} を使って背景色を設定するようにしてください:
 
   
  +
unredir-if-possible = false;
$ hsetroot -solid '#000000'
 
   
詳しくは https://github.com/chjj/compton/issues/162 を参照。
+
詳しくは [https://github.com/chjj/compton/issues/402] を参照。
  +
  +
=== xft フォントを使用した場合にラグが発生する ===
  +
  +
[[xterm]] や [[urxvt]] などのアプリケーションで Xft フォントを使用した場合に酷いラグが発生する場合、以下のオプションを使ってみてください:
  +
  +
--xrender-sync --xrender-sync-fence
  +
  +
もしくは xrender バックエンドを使ってみてください。
  +
  +
詳しくは [https://github.com/chjj/compton/issues/152] を参照。
   
 
=== AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する ===
 
=== AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する ===
次の引数を付けて compton を起動するか:
+
次の引数を付けて picom を起動するか:
   
 
--backend xrender
 
--backend xrender
   
{{ic|compton.conf}} ファイルに以下を追加してください:
+
{{ic|picom.conf}} ファイルに以下を追加してください:
   
 
backend = "xrender";
 
backend = "xrender";
132行目: 168行目:
 
詳しくは https://github.com/chjj/compton/issues/208 を参照。
 
詳しくは https://github.com/chjj/compton/issues/208 を参照。
   
  +
=== タブ化したウィンドウ (影と透過) ===
=== nvidia ドライバーを使っている場合に CPU 消費量が跳ね上がる ===
 
   
  +
透過されたウィンドウがタブ化されているとき、下のタブになっているウィンドウが見えてしまいます。タブ化されたウィンドウそれぞれが影を描画するため、影が重なります。
{{ic|--backend glx}} を使用した場合に CPU の使用量が高くなったり {{ic|--vsync}} を有効にしているとティアリングが発生する場合、[[NVIDIA]] に書かれているように {{Pkg|nvidia-libgl}}{{Broken package link|置換パッケージ: {{Pkg|nvidia-utils}}}} を[[インストール]]してください。
 
   
  +
既存の [https://projects.archlinux.org/svntogit/community.git/tree/trunk/compton.conf?h=packages/compton#n80 shadow-exclude リスト] に以下を追加することで重複する影の問題を解決できます:
=== nvidia ドライバーを使っている場合にデーモン化しようとするとエラーが発生する ===
 
   
  +
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
compton をバックグラウンドで起動しようとすると {{ic|main(): Failed to create new session.}} エラーが表示される場合 {{AUR|compton-garnetius-git}} を使ってください。上流にマージされていないパッチが当てられています。
 
   
  +
また、{{ic|picom.conf}} に以下を追加することで下のタブになっているウィンドウを描画しないようにできます:
=== xft フォントを使用した場合にラグが発生する ===
 
   
  +
opacity-rule = [
[[xterm]] や [[urxvt]] などのアプリケーションで Xft フォントを使用した場合に酷いラグが発生する場合、以下のオプションを使ってみてください:
 
  +
"95:class_g = 'URxvt' && !_NET_WM_STATE@:32a",
  +
"0:_NET_WM_STATE@[0]:32a *= '_NET_WM_STATE_HIDDEN'",
  +
"0:_NET_WM_STATE@[1]:32a *= '_NET_WM_STATE_HIDDEN'",
  +
"0:_NET_WM_STATE@[2]:32a *= '_NET_WM_STATE_HIDDEN'",
  +
"0:_NET_WM_STATE@[3]:32a *= '_NET_WM_STATE_HIDDEN'",
  +
"0:_NET_WM_STATE@[4]:32a *= '_NET_WM_STATE_HIDDEN'"
  +
];
   
  +
{{ic|URxvt}} はあなたが使っているターミナルの Xorg クラスに置き換えてください。{{ic|xprop WM_CLASS}} コマンドを実行してからウィンドウをクリックすることでウィンドウのクラスを確認できます。
--xrender-sync --xrender-sync-fence
 
   
  +
詳しくは [https://www.reddit.com/r/unixporn/comments/330zxl/webmi3_no_more_overlaying_shadows_and_windows_in/] を参照。
もしくは xrender バックエンドを使ってみてください。
 
   
  +
{{Warning|i3 と kitty を使っている場合、i3 のリロード時に全ての kitty のタブ化されたインスタンスがフリーズします (2019年6月4日現在) [https://github.com/kovidgoyal/kitty/issues/1681]。}}
詳しくは [https://github.com/chjj/compton/issues/152] を参照。
 
  +
  +
=== xsetroot で背景色が変えられない ===
  +
現在、picom は {{ic|xsetroot}} の {{ic|-solid}} オプションと互換性がありません。解決方法としては {{Pkg|hsetroot}} を使って背景色を設定するようにしてください:
  +
  +
$ hsetroot -solid '#000000'
  +
  +
詳しくは https://github.com/chjj/compton/issues/162 を参照。
  +
  +
=== NVIDIA のプロプライエタリドライバーでちらつきが発生する ===
  +
{{ic|picom.conf}} で以下のように設定してみてください:
  +
vsync = "opengl"
  +
  +
=== Nvidia のプロプライエタリドライバーと FullCompositionPipeline でラグが発生する ===
  +
  +
[[#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する]] を見てください。
  +
  +
=== Nvidia のプロプライエタリドライバーで Xorg によって GPU のメモリリークが発生する ===
  +
  +
[[#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する]] を見てください。
  +
  +
=== サスペンド後の Slock ===
  +
systemd サービスを使ってサスペンド・ハイバネート時に slock を起動している場合、復帰後に画面のロックが解除されてしまうことがあります。問題を解決するには、ウィンドウフェーディングを無効化してください:
  +
$ picom --no-fading-openclose
   
 
== 参照 ==
 
== 参照 ==
   
*[http://ubuntuforums.org/showthread.php?t=2144468&p=12644745#post12644745 Howto: Using Compton for tear-free compositing on XFCE or LXDE]
+
*[https://ubuntuforums.org/showthread.php?t=2144468&p=12644745#post12644745 Howto: Using Picom for tear-free compositing on XFCE or LXDE]

2019年11月21日 (木) 19:38時点における版

Picom は軽量なスタンドアロン型のコンポジットマネージャです。コンポジット機能が含まれていない Xorgウィンドウマネージャを使っている場合に向いています。Picom は compton のフォークであり、compton は xcompmgr-dana のフォークですが、xcompmgr-dana は xcompmgr のフォークです。

Picom は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。

インストール

picom パッケージをインストールしてください。git 版を使う場合、picom-gitAUR をインストールしてください。また、Qt ベースの設定 GUI を compton-confAUR または compton-conf-gitAUR をインストールすることで使うことができます。

設定

デフォルトの設定は /etc/xdg/picom.conf にあります。 ~/.config/picom.conf~/.config/picom/picom.conf~/.picom.conf にコピーしてカスタマイズできます。

picom でカスタム設定ファイルを使うには、次のコマンドを使用:

$ picom --config path/to/picom.conf

一部ウィンドウの影を無効化

picom が影を描画することによって、一部のアプリケーションでは見た目がおかしくなってしまうことがあります。shadow-exclude オプションで picom の影を無効にできます。現在無効になっているウィンドウについては [1] を見てください。

メニューの影を無効化するには picom.conf wintypes に以下を追加してください:

# menu        = { shadow = false; };
dropdown_menu = { shadow = false; };
popup_menu    = { shadow = false; };
utility       = { shadow = false; };

透過

選択・非選択ウィンドウの透過率を設定するには、以下を picom.conf に追加 (例: ターミナルエミュレータ):

opacity-rule = [
  "90:class_g = 'URxvt' && focused",
  "60:class_g = 'URxvt' && !focused"
];

#タブ化したウィンドウ (影と透過)も見てください。

使用方法

Picom はいつでも手動で有効化・無効化することができます。また、バックグラウンドで自動起動 (デーモン) することも可能です。また、コンポジット効果を設定できる任意の引数もあります。引数の一部:

  • -b: バックグラウンドプロセス (デーモン) で実行 (例: Openbox などのウィンドウマネージャで自動起動する場合)
  • -c: 影効果を有効化
  • -C: パネルとドックの影効果を無効化
  • -G: アプリケーションウィンドウとドラッグアンドドロップオブジェクトの影効果を無効化
  • --config: 指定した設定ファイルを使用

他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは picom(1) を見て下さい。

ノート: 他のコンポジットマネージャが動作している場合、picom を起動する前に無効化してください。

セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用:

$ picom

また、影効果を全て無効化するには、-C-G 引数を追加します:

$ picom -CG

バックグラウンドプロセス (デーモン) として picom を自動起動するには、-b 引数を使います:

$ picom -b

デーモンプロセスの影効果を全て無効化するには、-C-G 引数を追加:

$ picom -CGb

以下は引数を追加して必要な値を設定した例です:

$ picom -cCGfF -o 0.38 -O 200 -I 200 -t 0 -l 0 -r 3 -D2 -m 0.88

マルチディスプレイ

xinerama を使わずにマルチディスプレイの設定をしている場合 (複数のスクリーンで X サーバーを実行している場合)、デフォルトでは picom は一つのスクリーンでしか起動しません。-d 引数を使うことで全てのスクリーンで実行させることができます。例:

picom -b -d :0

上記のコマンドでうまくいかない場合、以下のように手動でスクリーンを指定するコマンドを試してみてください:

seq 0 3 | xargs -l1 -I@ picom -b -d :0.@

トラブルシューティング

最近のバージョンの picom には DRI2 アクセラレーションに問題があり、DRI2 を使っているときにちらつきが発生していました (picom バグ, mesa バグ)。対処策によって問題は解決していますが、一部のユーザーにはまだ問題が残っているという報告があります。DRI3 にはこのような問題はありません。

他のアプリケーションやプログラムで正しい設定をしていない場合、コンポジット効果を有効にすることで外観がおかしくなる問題が発生することがあります。

Conky

Conky のウィンドウの影を無効化するには、~/.conkyrc に以下を記述します:

own_window_class conky

dwm と dmenu

dwm のステータスバーは picom の関数から検出されず、自動的にウィンドウマネージャのエレメントが除外されることはありません。また、dwm のステータスバーと dmenu のどちらもウィンドウ id は固定されていません。ステータスバーがウィンドウ透過しないようにしたい場合、ソースコードのウィンドウクラスにパッチをあてるか、他の属性を使って除外してください。dmenu と dwm のステータスバーを上部に表示している場合、位置によって指定することができます:

$ picom <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 のマスタースタックにある全てのウィンドウにマッチします)。

Firefox

#一部ウィンドウの影を無効化を見てください。

Firefox の部品の影を無効化するには picom.conf の shadow-exclude に以下を追加します:

"class_g = 'Firefox' && argb",

詳しくは [2] を参照。

Slock

インアクティブウィンドウの透過を有効にしている場合 (コマンドで実行している場合 -i 引数)、slock を使っているときに問題が発生します。透過度を 0.2 にすることで解決します。例えばコマンドで picom を実行する場合:

$ picom <any other arguments> -i 0.2

または、設定ファイルを使う場合:

inactive-dim = 0.2;

もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。

ノート: プログラムによっては新しいインスタンスを起動するたびに id を変化させるものもありますが、slock の id は固定されています。

名前がないウィンドウを全て picom から除外するには:

$ picom <other arguments> --focus-exclude "! name~="

次のコマンドを実行することで slock のウィンドウ id を確認できます:

$ xwininfo & slock

画面の何処かを (slock が終了する前に) 素早くクリックして、パスワードを入力してロックを解除してください。以下のようにウィンドウ id が出力されます:

xwininfo: Window id: 0x1800001 (has no name)

取得できたウィンドウ id を使って picom から除外するには:

$ picom <any other arguments> --focus-exclude 'id = 0x1800001'

もしくは、設定ファイルを使う場合:

focus-exclude = "id = 0x1800001";

ちらつき

デフォルトの picom.conf を使っているときに最大化されたウィンドウでちらつきが発生する場合、以下のオプションで解決できます:

unredir-if-possible = false;

詳しくは [3] を参照。

xft フォントを使用した場合にラグが発生する

xtermurxvt などのアプリケーションで Xft フォントを使用した場合に酷いラグが発生する場合、以下のオプションを使ってみてください:

--xrender-sync --xrender-sync-fence

もしくは xrender バックエンドを使ってみてください。

詳しくは [4] を参照。

AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する

次の引数を付けて picom を起動するか:

--backend xrender

picom.conf ファイルに以下を追加してください:

backend = "xrender";

詳しくは https://github.com/chjj/compton/issues/208 を参照。

タブ化したウィンドウ (影と透過)

透過されたウィンドウがタブ化されているとき、下のタブになっているウィンドウが見えてしまいます。タブ化されたウィンドウそれぞれが影を描画するため、影が重なります。

既存の shadow-exclude リスト に以下を追加することで重複する影の問題を解決できます:

"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"

また、picom.conf に以下を追加することで下のタブになっているウィンドウを描画しないようにできます:

opacity-rule = [
  "95:class_g = 'URxvt' && !_NET_WM_STATE@:32a",
  "0:_NET_WM_STATE@[0]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[1]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[2]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[3]:32a *= '_NET_WM_STATE_HIDDEN'",
  "0:_NET_WM_STATE@[4]:32a *= '_NET_WM_STATE_HIDDEN'"
];

URxvt はあなたが使っているターミナルの Xorg クラスに置き換えてください。xprop WM_CLASS コマンドを実行してからウィンドウをクリックすることでウィンドウのクラスを確認できます。

詳しくは [5] を参照。

警告: i3 と kitty を使っている場合、i3 のリロード時に全ての kitty のタブ化されたインスタンスがフリーズします (2019年6月4日現在) [6]

xsetroot で背景色が変えられない

現在、picom は xsetroot-solid オプションと互換性がありません。解決方法としては hsetroot を使って背景色を設定するようにしてください:

$ hsetroot -solid '#000000'

詳しくは https://github.com/chjj/compton/issues/162 を参照。

NVIDIA のプロプライエタリドライバーでちらつきが発生する

picom.conf で以下のように設定してみてください:

vsync = "opengl"

Nvidia のプロプライエタリドライバーと FullCompositionPipeline でラグが発生する

#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する を見てください。

Nvidia のプロプライエタリドライバーで Xorg によって GPU のメモリリークが発生する

#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する を見てください。

サスペンド後の Slock

systemd サービスを使ってサスペンド・ハイバネート時に slock を起動している場合、復帰後に画面のロックが解除されてしまうことがあります。問題を解決するには、ウィンドウフェーディングを無効化してください:

$ picom --no-fading-openclose

参照