Transparency has gone.

最近Ubuntu 24.04.1 LTSに上げたわけなのだけど、

  • Wayland 環境で
  • 背景を半透明にする機能を備えたアプリケーションを
  • フルスクリーン表示にすると

その半透明機能が効かなくなるという現象が発生して困っている。たとえばgnome-terminalとかだ。端末の背景がスケスケの助になるのはカッコいいだけではなくちゃんと実用的なので、そうならないと日々の作業が直接的に不便になって困る。

調べてみるとこれはmutter(Waylandにおけるコンポジタ─すべてのウィンドウとデスクトップのビットマップを合成するプログラム)の仕様がそう変わったから、のようだ。フルスクリーンの状態ならそのアプリケーションが全てのピクセルについて責任を持とう、みたいなポリシーなんだろうか。
https://gitlab.gnome.org/GNOME/mutter/-/issues/2520

その理屈自体は筋が通っているかもしれないが、しかし実際影響が大きすぎるので、なんか代替の仕様が必要なんじゃない?みたいな話にもなっている…が、あまり動きは活発ではない。
https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/116

とりあえずのワークアラウンドとしてはフルスクリーンではなくウィンドウを最大化すればいいわけなのだが、そうするとタイトルバーが無駄にピクセルを消費してとても邪魔なのである。これをどうにかしたい。

ここで、探してみるとウィンドウを最大化したときタイトルバーを隠しますと謳うgnomeエクステンションがあったりするのだけど、入れてもそうならない。gnomeエクステンションの仕様はちょくちょく破壊的な変更を伴うのか動作するバージョンの範囲が狭いものが多いのであまりに当てにならない。
https://github.com/hardpixel/unite-shell

ということで別の何かを探してみると、Black Boxという端末エミュレータがある。
https://gitlab.gnome.org/raggesilver/blackbox
新しい端末を作りました!ってお出しされた場合、肝心の端末のコア部分が既存のライブラリなのか、それを含めて自作なのかで評価の軸が変わってくる。このアプリケーションの場合コアはlibvteなので、主に評価すべきはそのガワの部分である(ただしflatpakパッケージとして公開されていて、最新のlibvteを内包している…という工夫がされている。そのため、sixelも使えてしまう)。

で、ガワの部分だけどタイトルバー(とタブバー)を隠すというオプションがあり、その通りに動作する。また、タイトルバーがありそうな位置にマウスポインタを持ってくるとニュッと出てくる動作にすることもできる。おー。いいじゃん。これにしよう。

…となりそうなのだけど、別の所から問題が出てくる。前述の通りこれはflatpakパッケージで、起動中flatpak-session-helperなるプログラムも漏れなく動いているわけなのだが、何か知らないがこれが常時数%〜十数%のCPUパワーを消費してマシンのファンをファンファンさせるのであった。なにこれぇ。
https://github.com/flatpak/xdg-dbus-proxy/issues/51

しかし原因がBlack Boxなのか、flatpak-session-helperなのかよく分かっていない。Black BoxにはNightly版もあるのでこれを使うようにして様子を見てみよう。

Leave a Reply

Your email address will not be published. Required fields are marked *