Ubuntu 22.04でGNOME Shell Extensions 拡張機能が動作しない

これ問題だし結構困ってる人多いと思うので書いとく。

現象

今のUbuntuはデフォルトのデスクトップマネージャがUnityからGNOMEベースになっている(ログイン時に選択するセッションの名前は Ubuntu となっている)。で、GNOMEはShell ExtensionsというWeb技術ベースのシェル拡張機能が使えるようになっている。これがデフォルトの状態だと動かない。シェル拡張機能のインストールはFireFoxのGNOME Shell Extensions拡張機能から行うが、これを開くと

Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector.

と表示される。で、案内されるドキュメントでは chrome-gnome-shell パッケージをインストールしろなどと言われるがどうもこれは推奨パッケージにChromiumが表示されているあたりから察するに、Gooogle Chrome(やChromium)向けの拡張機能であるような気がする。インストールしても問題は解決しない。

原因

firefoxがデフォルト設定だとsnapでインストールされるのが原因。ちなみにsnap list でインストールされているパッケージ一覧が見れる。

UbuntuはいつからかsnapでFireFoxをインストールするようになった。ググった限り、21.04などでもこの問題は発生する模様。

snapでインストールされるとloopな別ファイルシステム上にバイナリなどが置かれてそこで実行される仕組みなので、GNOMEシェルのなにかの機能に触れないことが問題っぽい。

解決方法

firefoxを配布するmozillaのPPAを追加すればよい…と言いたいが、これだけだとUbuntu公式パッケージ(snapでインストールされてしまうやつ)のほうが優先されてしまうので多少設定をいじらないといけない。その方法は以下に解説されているが、英語なのと、この設定方法を忘れたら結構困るので本ブログにも日本語で書いておく。

How to Install Firefox as a .Deb on Ubuntu 22.04 (Not a Snap)

  1. snapからfirefoxを消す。設定はsnapでもユーザーホームディレクトリ以下に保存されているはずだが(未確認)、設定が消えないか不安ならばfirefoxの同期機能(Sync)でバックアップを取っておいたほうがよい。
sudo snap remove firefox
  1. PPAリポジトリを追加
 sudo add-apt-repository ppa:mozillateam/ppa
  1. mozillaのPPAリポジトリで配布されているパッケージの優先度を上げる
echo '
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
' | sudo tee /etc/apt/preferences.d/mozilla-firefox
  1. 自動アップグレードをする場合は以下もどうぞ。
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
  1. あとは普通にインストール。
sudo apt install firefox

ちゃんと設定されていれば、インストールされているバージョンに「snap」の文字が入らないはず。

なんでsnapなの…

背景がよくわからないですがUbuntuは最近snapを推してます。依存関係を保ったままパッケージを更新していくのが大変なんでしょうか。

snapはまだこういったところで躓くことが多い印象で、あんまり使いたくありません。特にfirefoxはこういう問題もあるので、できればmozilla ppaからのパッケージをインストールしたほうがいいでしょう。Ubuntuインストール直後の状態で重要なGNOMEの機能であるShell Extensionsがインストールできない(拡張機能が動かない)というのは結構問題だと思うのですが…。