Linuxでデフォルトブラウザ設定が効かない問題

2023年2月19日

デフォルトブラウザ設定が効かないという問題に遭遇した。全く効かないわけではなく、デスクトップにURLショートカットを置き、それをダブルクリックした時だけだ。

ここでは、Linux Mint 21.1 Cinnamonを対象にしている。

デフォルトブラウザ設定の効くケース

システム設定>お気に入りのアプリで、Braveなり、Vivaldiなり、Chromeなりを指定する。

この場合、例えば、メッセンジャーアプリなどのメッセージ中にURLがある場合、それをクリックすれば、指定したデフォルトブラウザで開く。

また、この状態でデフォルトブラウザ以外のブラウザを起動すると、以下のような表示になる。

これは完全に動作しているようだ。

デフォルトブラウザ設定の効かないケース

ところが、このシステム設定とは全く無関係のケースがある。これが、ブラウザのURLバーからデスクトップにドラッグドロップして作成したショートカットである。先のシステム設定は無視されている。

いま、システム設定でのデフォルトをChromeにしてあるのだが、デスクトップ上に置かれたショートカットを右クリックすると、以下の表示になる。

上のように全く反映されていない。

そして、このショートカットをダブルクリックすると、Vivaldiではなく、Braveが起動してしまう。ここに至るまであれこれといじったせいなのか、全く無茶苦茶な状態になっている。

解決策

この解決策としては、次の通り。

  • システム設定のデフォルトブラウザは、完全に先のデスクトップショートカットURLとは無関係らしい。
  • デスクトップショートカットでのデフォルトブラウザは、xdg-settingsで決めなければならない。

実際にやってみる。

xdg-settings set default-web-browser vivaldi-stable.desktop

としてダブルクリックすると、vivaldiで表示される。

xdg-settings set default-web-browser brave-browser.desktop

としてダブルクリックすると、braveで表示される。

xdg-settings set default-web-browser firefox.desktop

としてダブルクリックすると、firefoxで表示される。

各デフォルト設定への影響

上のxdg-settingsを行うと、逆にそれがシステム設定>お気に入りのアプリの設定に反映されている。

ところが、ショートカット右クリックの「別のプログラムで開く」を見てみると、全く反映されていない。最初の設定のままだ。

まとめ

この実験からわかったことは以下である。

  • システム設定>お気に入りのアプリでのデフォルトブラウザ設定は一部しか変更しない。
  • xdg-settingsによる変更は、上も含めてすべてを変更する。
  • ショートカット右クリックの「別のプログラムで開く」からのデフォルト設定は何の意味もないらしい。

ブラウザの名称

さて、上でブラウザの名称として、vivaldi-stable.desktop、brave-browser.desktop、firefox.desktopとしたが、これは、以下を行うことによってわかる。

$ cd /usr/share/applications
$ grep 'Web Browser' *.desktop
brave-browser.desktop:Name=Brave Web Browser
brave-browser.desktop:GenericName=Web Browser
brave-browser.desktop:GenericName[en_GB]=Web Browser
brave-browser.desktop:GenericName[fil]=Web Browser
firefox.desktop:Name=Firefox Web Browser
firefox.desktop:GenericName=Web Browser
vivaldi-stable.desktop:GenericName=Web Browser
vivaldi-stable.desktop:GenericName[en_GB]=Web Browser
vivaldi-stable.desktop:GenericName[fil]=Web Browser

なぜか、Chromeが含まれていないが、以下の操作でわかった。

システム設定>お気に入りでChromeを指定し、

$ xdg-settings get default-web-browser
com.google.Chrome.desktop

flatpakからのインストールだと別の場所に現れるらしい。

$ sudo find . -name com.google.Chrome.desktop -print     
find: ‘./proc/5582/task/5582/net’: 無効な引数です
find: ‘./proc/5582/net’: 無効な引数です
find: ‘./run/user/1000/doc’: 許可がありません
find: ‘./run/user/1000/gvfs’: 許可がありません
./var/lib/flatpak/exports/share/applications/com.google.Chrome.desktop
./var/lib/flatpak/app/com.google.Chrome/x86_64/stable/5ba2c72b2ace0262dd65110e7485e2c5ae4a4ce01ba4ac2adcd2e21f31890e19/files/share/applications/com.google.Chrome.desktop
./var/lib/flatpak/app/com.google.Chrome/x86_64/stable/5ba2c72b2ace0262dd65110e7485e2c5ae4a4ce01ba4ac2adcd2e21f31890e19/export/share/applications/com.google.Chrome.desktop