2021-01-11

(Linux)Spotify に負けたけど、勝った

 Linux Mint で Flatpak 版の Spotify Client を愛用しているのですが、キャッシュ用ディレクトリの場所を変更したり、ローカルディスク上の楽曲ファイルにアクセスできないのをなんとかしようと足掻いてみました。

主な事象としては「設定」から「オフライン保存容量」 で示される「ファイルの場所」を変更しようと「場所を変更」ボタンを押すと、Spotify Client がお亡くなりになってしまいます。

同じく、「ローカルファイル」から「ローカルファイルを表示する」のチェックは ON にできるのですが、「同期先を選択」ボタンを押すと、やはり Spotify Client がお亡くなりになってしまいます。


さて、ローカルファイルはまあ良いとして、「オフライン保存容量」はダウンロードを指示した楽曲のダウンロード先になり、これだけでも変更したいと思い、粘ってみました。ていうか、このディレクトリの上位ディレクトリには楽曲のキャッシュディレクトリになっているので、どちらかというとこちらの場所を変えたいのです。

ということは、Spotify Client の設定画面からダウンロード先だけをなんとか変更しようとするよりも、上位ディレクトリを丸ごとシンボリックリンクにしてしまった方が良いですね、ということになりました。

さて、現状ではキャッシュなども保管される上位ディレクトリは /home/ユーザー名/.var/app/com.spotify.Client/cache/spotify と指定されています。(Flatpak 版のため)

末尾の /spotify を大胆に削除し、以下のコマンドでシンボリックリンクを張ります。


ln -s /mnt/DATA/Spotify spotify


これで準備は完了です。いざ Spotify Client を起動してみると、正しく起動できました。自分のアカウントもちゃんと認識されています。大成功かと思い、楽曲を再生してみると、なぜか再生が始まりません・・・・・・。

シンボリックリンクを解除すると元の場所に Spotify Client が必要なディレクトリを自動で作成してくれるので、前と同じように楽曲の再生はできるようになりますが、前と同じようにディレクトリの場所は変更できません。

Linux 版 Spotify のサポートフォーラムで同様に事象が発生していないか確認したところ、Flatpak 上で少し古いバージョンにダウングレードすると回避できる、という記事を発見しました。

投入するコマンドは調査の結果、以下の通りです。ワタシの Flatpak アプリケーションのインストール先は system ではなくuser です。

flatpak update --commit=ca4fd2d20d5b3188e31d7ecff120ed8be818cd7d4b32b56229c97db12c65a1ea com.spotify.Client

さっそくコマンドを投入してみると、古いバージョンの deb ファイルのダウンロードが始まったのですが、以下のようなエラーで止まってしまいました。

Error: While downloading http://repository.spotify.com/pool/non-free/s/spotify-client/spotify-client_1.1.26.501.gbe11e53b-15_amd64.deb: Connection terminated unexpectedly

何度試してみてもダウンロードが途中までしか進まず成功しません。もう心が折れてしまいました。

 

折れたものの、なぜか調査の手は止まりませんでした。その内に Spotify Client ではなく Flatpak の障害事例に辿り着き、「これは!」と思い試してみました。

まずは現状の確認です。

flatpak info --show-permissions com.spotify.Client
[Context]
shared=network;ipc;
sockets=x11;pulseaudio;
devices=dri;
filesystems=xdg-pictures:ro;xdg-music:ro;

[Session Bus Policy]
org.gnome.SessionManager=talk
org.freedesktop.Notifications=talk
org.mpris.MediaPlayer2.spotify=own
org.gnome.SettingsDaemon=talk

[Environment]
TMPDIR=/tmp
LD_LIBRARY_PATH=/app/lib

filesystems というのがポイントで、現状ではホームディレクトリ配下の Pictures と Music ディレクトリを読み取りしかできないようです。

これを以下のコマンドで希望の外部ディレクトリへのアクセスできるように変更します。今回はキャッシュ情報の書き込みなどが発生するため、ディレクトリ名の末尾には ro ではなく create を指定しました。

flatpak override --user --filesystem=/mnt/DATA/Spotify:create com.spotify.Client

override が終わったので、設定値を再確認してみます。

flatpak info --show-permissions com.spotify.Client
[Context]
shared=network;ipc;
sockets=x11;pulseaudio;
devices=dri;
filesystems=xdg-pictures:ro;xdg-music:ro;/mnt/DATA/Spotify:create;

[Session Bus Policy]
org.gnome.SessionManager=talk
org.freedesktop.Notifications=talk
org.mpris.MediaPlayer2.spotify=own
org.gnome.SettingsDaemon=talk

[Environment]
TMPDIR=/tmp
LD_LIBRARY_PATH=/app/lib

filesystems の末尾に追加されています。さて、この状態で Spotify Client を起動してみると、大成功です。指定したディレクトリを使ってくれるようになりました。

ローカルファイルが使えるようになるのは Spotify Client のアップデートに期待することとして、とりあえずキャッシュやらダウンロードの先は自分の意図したディレクトリへ変更することができました。メデタシ、メデタシ。