「Picom」の版間の差分
Kusakata.bot (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
|||
(6人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
[[Category:X サーバー]] |
[[Category:X サーバー]] |
||
[[Category:視覚効果]] |
[[Category:視覚効果]] |
||
− | [[en: |
+ | [[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]] のフォークです。 |
||
− | + | Picom は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。 |
|
== インストール == |
== インストール == |
||
− | {{Pkg| |
+ | {{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}}: 指定した設定ファイルを使用 |
||
− | 他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは |
+ | 他にも、タイミングの設定や、管理するディスプレイ、メニューやウィンドウの縁、インアクティブアプリケーションメニューの透過度など多数のオプションが存在します。詳しくは {{man|1|picom}} を見て下さい。 |
− | |||
− | {{Note|他の[[コンポジットマネージャ]]が動作している場合、''compton'' を起動する前に無効化してください。}} |
||
+ | {{Note|他の[[コンポジットマネージャ]]が動作している場合、''picom'' を起動する前に無効化してください。}} |
||
− | === 自動起動 === |
||
− | compton を[[デーモン]]として自動起動させる方法は使っている[[デスクトップ環境]]や[[ウィンドウマネージャ]]によります。例えば、[[Openbox]] の場合 {{ic|~/.config/openbox/autostart}} ファイルを編集する必要があります。[[i3]] の場合 {{ic|~/.i3/config}} ファイルを使います。必要であれば、[[xprofile]] や [[xinitrc]] から compton を自動起動することもできます。詳細は[[自動起動]]の記事を見て下さい。 |
||
− | === コマンドを使う === |
||
セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用: |
セッション中にデフォルトのコンポジット効果を手動で有効化するには、次のコマンドを使用: |
||
− | $ |
+ | $ picom |
また、影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加します: |
また、影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加します: |
||
− | $ |
+ | $ picom -CG |
− | バックグラウンドプロセス ([[デーモン]]) として |
+ | バックグラウンドプロセス ([[デーモン]]) として picom を自動起動するには、{{ic|-b}} 引数を使います: |
− | + | $ picom -b |
|
[[デーモン]]プロセスの影効果を全て無効化するには、{{ic|-C}} と {{ic|-G}} 引数を追加: |
[[デーモン]]プロセスの影効果を全て無効化するには、{{ic|-C}} と {{ic|-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 は一つのスクリーンでしか起動しません。{{ic|DISPLAY}} 環境変数を使うことで全てのスクリーンで実行させることができます。 |
||
+ | 例えば、バックグラウンドで X スクリーン 0 で実行する場合: |
||
+ | DISPLAY=":0" picom -b |
||
− | デフォルトの設定は {{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" |
||
− | + | もしくは、設定ファイルを使う場合: |
|
+ | 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}} にすることで解決します。例えばコマンドで |
+ | インアクティブウィンドウの透過を有効にしている場合 (コマンドで実行している場合 {{ic|-i}} 引数)、[[アプリケーション一覧/セキュリティ#スクリーンロック|slock]] を使っているときに問題が発生します。透過度を {{ic|0.2}} にすることで解決します。例えばコマンドで picom を実行する場合: |
− | $ |
+ | $ picom <any other arguments> -i 0.2 |
または、設定ファイルを使う場合: |
または、設定ファイルを使う場合: |
||
96行目: | 129行目: | ||
もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。 |
もしくは、slock のウィンドウ ID を使用して slock を除外したり、名前がないウィンドウを全て除外する方法もあります。 |
||
{{note|プログラムによっては新しいインスタンスを起動するたびに id を変化させるものもありますが、slock の id は固定されています。}} |
{{note|プログラムによっては新しいインスタンスを起動するたびに id を変化させるものもありますが、slock の id は固定されています。}} |
||
− | 名前がないウィンドウを全て |
+ | 名前がないウィンドウを全て picom から除外するには: |
− | $ |
+ | $ picom <other arguments> --focus-exclude "! name~=''" |
− | 次のコマンドを実行することで |
+ | 次のコマンドを実行することで 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 を使って |
+ | 取得できたウィンドウ id を使って picom から除外するには: |
− | $ |
+ | $ picom <any other arguments> --focus-exclude 'id = 0x1800001' |
もしくは、設定ファイルを使う場合: |
もしくは、設定ファイルを使う場合: |
||
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 のマスタースタックにある全てのウィンドウにマッチします)。 |
||
+ | デフォルトの {{ic|picom.conf}} を使っているときに最大化されたウィンドウでちらつきが発生する場合、以下のオプションで解決できます: |
||
− | === xsetroot で背景色が変えられない === |
||
− | 現在、compton は {{ic|xsetroot}} の {{ic|-solid}} オプションと互換性がありません。解決方法としては {{aur|hsetroot}} を使って背景色を設定するようにしてください: |
||
+ | unredir-if-possible = false; |
||
− | $ hsetroot -solid '#000000' |
||
− | 詳しくは https://github.com/chjj/compton/issues/ |
+ | 詳しくは [https://github.com/chjj/compton/issues/402] を参照。 |
+ | |||
+ | === フルスクリーン画面でティアリングが発生する === |
||
+ | |||
+ | フルスクリーンでビデオ再生するとティアリングが発生する場合、[[Picom#ちらつき|ちらつき]] を参照してください。 |
||
+ | |||
+ | === xft フォントを使用した場合にラグが発生する === |
||
+ | |||
+ | [[xterm]] や [[urxvt]] などのアプリケーションで Xft フォントを使用した場合に酷いラグが発生する場合、以下のオプションを使ってみてください: |
||
+ | |||
+ | --xrender-sync --xrender-sync-fence |
||
+ | |||
+ | もしくは xrender バックエンドを使ってみてください。 |
||
+ | |||
+ | 詳しくは [https://github.com/chjj/compton/issues/152] を参照。 |
||
=== AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する === |
=== AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する === |
||
− | 次の引数を付けて |
+ | 次の引数を付けて picom を起動するか: |
--backend xrender |
--backend xrender |
||
− | {{ic| |
+ | {{ic|picom.conf}} ファイルに以下を追加してください: |
backend = "xrender"; |
backend = "xrender"; |
||
132行目: | 173行目: | ||
詳しくは 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}}{{Broken package link|パッケージが存在しません}} を使ってください。上流にマージされていないパッチが当てられています。 |
||
+ | また、{{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 = true |
||
+ | |||
+ | === Nvidia のプロプライエタリドライバーと FullCompositionPipeline でラグが発生する === |
||
+ | |||
+ | [[#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する]] を見てください。 |
||
+ | |||
+ | === Nvidia のプロプライエタリドライバーで Xorg によって GPU のメモリリークが発生する === |
||
+ | |||
+ | [[#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する]] を見てください。 |
||
+ | |||
+ | === サスペンド後の Slock === |
||
+ | systemd サービスを使ってサスペンド・ハイバネート時に slock を起動している場合、復帰後に画面のロックが解除されてしまうことがあります。問題を解決するには、ウィンドウフェーディングを無効化してください: |
||
+ | $ picom --no-fading-openclose |
||
== 参照 == |
== 参照 == |
||
− | *[https://ubuntuforums.org/showthread.php?t=2144468&p=12644745#post12644745 Howto: Using |
+ | *[https://ubuntuforums.org/showthread.php?t=2144468&p=12644745#post12644745 Howto: Using Picom for tear-free compositing on XFCE or LXDE] |
2023年9月13日 (水) 00:21時点における最新版
Picom は軽量なスタンドアロン型のコンポジットマネージャです。コンポジット機能が含まれていない Xorg のウィンドウマネージャを使っている場合に向いています。Picom は compton のフォークであり、compton は xcompmgr-dana のフォークですが、xcompmgr-dana は xcompmgr のフォークです。
Picom は大量にあった先行者のバグを修正していることで特に有名で、信頼性があり安定しているということで人気があります。他にも、高速な GLX (OpenGL) バックエンド (デフォルトでは無効になっています) やデフォルトのアクティブ・インアクティブウィンドウの透過、ウィンドウの枠の透過、ウィンドウの背景のブラー、ウィンドウの色の反転、描画レートの調整、垂直同期、条件で分岐する細かい制御、設定ファイルの読み込み、D-Bus の制御など、多数の改善や設定オプションが実装されています。
目次
- 1 インストール
- 2 設定
- 3 使用方法
- 4 マルチディスプレイ
- 5 トラブルシューティング
- 5.1 Conky
- 5.2 dwm と dmenu
- 5.3 Firefox
- 5.4 Slock
- 5.5 ちらつき
- 5.6 フルスクリーン画面でティアリングが発生する
- 5.7 xft フォントを使用した場合にラグが発生する
- 5.8 AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する
- 5.9 タブ化したウィンドウ (影と透過)
- 5.10 xsetroot で背景色が変えられない
- 5.11 NVIDIA のプロプライエタリドライバーでちらつきが発生する
- 5.12 Nvidia のプロプライエタリドライバーと FullCompositionPipeline でラグが発生する
- 5.13 Nvidia のプロプライエタリドライバーで Xorg によって GPU のメモリリークが発生する
- 5.14 サスペンド後の Slock
- 6 参照
インストール
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
また、影効果を全て無効化するには、-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 は一つのスクリーンでしか起動しません。DISPLAY
環境変数を使うことで全てのスクリーンで実行させることができます。
例えば、バックグラウンドで X スクリーン 0 で実行する場合:
DISPLAY=":0" picom -b
上記はすべてのモニタで動作するはずですが、動作しない場合は手動で各モニタを指定する古い方法を試してみてください。
seq 0 3 | xargs -l1 -I@ picom -b -d :0.@
トラブルシューティング
最近のバージョンの picom には DRI2 アクセラレーションに問題があり、DRI2 を使っているときにちらつきが発生していました (picom バグ, mesa バグ)。対処策によって問題は解決していますが、一部のユーザーにはまだ問題が残っているという報告があります。DRI3 にはこのような問題はありません。
他のアプリケーションやプログラムで正しい設定をしていない場合、コンポジット効果を有効にすることで外観がおかしくなる問題が発生することがあります。
Conky
Conky のウィンドウの影を無効化するには、~/.conkyrc
に以下を記述します:
own_window_class conky
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 を除外したり、名前がないウィンドウを全て除外する方法もあります。
名前がないウィンドウを全て 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 フォントを使用した場合にラグが発生する
xterm や urxvt などのアプリケーションで 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] を参照。
xsetroot で背景色が変えられない
現在、picom は xsetroot
の -solid
オプションと互換性がありません。解決方法としては hsetroot を使って背景色を設定するようにしてください:
$ hsetroot -solid '#000000'
詳しくは https://github.com/chjj/compton/issues/162 を参照。
NVIDIA のプロプライエタリドライバーでちらつきが発生する
picom.conf
で以下のように設定してみてください:
vsync = true
Nvidia のプロプライエタリドライバーと FullCompositionPipeline でラグが発生する
#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する を見てください。
Nvidia のプロプライエタリドライバーで Xorg によって GPU のメモリリークが発生する
#AMD の Catalyst ドライバーを使ってる場合に画面に問題が発生する を見てください。
サスペンド後の Slock
systemd サービスを使ってサスペンド・ハイバネート時に slock を起動している場合、復帰後に画面のロックが解除されてしまうことがあります。問題を解決するには、ウィンドウフェーディングを無効化してください:
$ picom --no-fading-openclose