「Spotify」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(5人の利用者による、間の37版が非表示)
1行目: 1行目:
[[Category:音声/動画]]
+
[[Category:音]]
[[Category:Wine]]
+
[[Category:ストリーミング]]
 
[[en:Spotify]]
 
[[en:Spotify]]
  +
[[es:Spotify]]
[https://www.spotify.com/ Spotify] は数百万もの曲にアクセスすることができるデジタル音楽サービスです。
 
  +
[[Wikipedia:ja:Spotify|Spotify]] は、フリーミアム型のビジネスモデルを採用したデジタル音楽ストリーミングサービスです。この記事は主に、Spotify が積極的にサポートしていない、半公式でプロプライエタリな '''Spotify for Linux''' クライアントについて書かれています [https://www.spotify.com/us/download/linux/] その他に、[https://open.spotify.com/ オンラインプレイヤー] や多くのオープンソース [[#サードパーティのクライアント|サードパーティのクライアント]] について紹介。
   
  +
== インストール ==
このインターネット音楽サービスを使うことで無料でデータベースから曲を選択してストリーミング再生できます。以前はヨーロッパ限定でしたが、最近になってアメリカでもサービスが開始されました。現在は日本でもサービスインしています。Debian と Fedora ディストリビューション向けに公式に Linux クライアントがパッケージで配布されており、AUR からインストールすることが可能です: {{AUR|spotify}}。公式では、Linux ユーザーは Wine で Windows クライアントを動かすことを推奨しています。また、曲の間にときどき音声広告が流れます。
 
   
  +
{{Pkg|spotify-launcher}} を [[インストール]] します。このパッケージは、ホームディレクトリ内のユーザーごとのインストールを管理し、Spotify が [[pacman]] とは独立して自身を更新できるようにします (他のオペレーティング システムで Spotify が自己更新する方法と似ています。)
Spotify では無料ユーザーがプレイリストを作成することができ、シャッフルしたり、リピートするトラックを設定することができます。Spotify で提供されているコンテンツにはオリジナル版と検閲版の両方があります。
 
   
  +
[[pacman]] を使用して Spotify の更新を管理したい場合は、代わりに [https://www.spotify.com/us/download/linux/Spotify for Linux] を再パッケージ化する {{AUR|spotify}} を使用してください。ローカルファイルを追加して再生する必要がある場合は、{{Pkg|zenity}} と {{Pkg|ffmpeg4.4}} を追加でインストールする必要があります。
== クライアントのインストール ==
 
   
  +
=== サードパーティクライアント ===
使用したいクライアントをどちらか選択してください。Linux クライアントの方が好評ですが、wine の使用に慣れている場合、windows クライアントを選択するのも良いでしょう。両方のクライアントをインストールする必要はありません。https://play.spotify.com/ で使えるオンラインプレイヤーも存在します ([[Flash]] が必要です)。
 
   
  +
{{Note|ここにリストされているすべてのクライアントは、Spotify からのストリーミングにプレミアムアカウントが '''必要''' です。}}
=== 代替クライアント ===
 
公式の Spotify クライアントの代わりになるソフトウェアが存在します:
 
   
  +
* {{App|Librespot|オープンソースの Spotify クライアントライブラリ。公式のクローズドソースの ''libspotify'' を使わなくても Spotify のサービス (ストリーミング) をアプリケーションから使えるようになります。|https://github.com/plietar/librespot|{{AUR|librespot-git}}}}
* {{App|[[Wikipedia:Clementine_(software)|Clementine]]|Qt 4 に移植された Amarok 1.4 クローン。設定でプラグインをアクティベート(ダウンロード)することでプレミアムアカウントの Spotify からストリーミングすることができます。|http://www.clementine-player.org/|{{Pkg|clementine}}}}
 
  +
* {{App|MellowPlayer|Web ベースの音楽ストリーミングサービスを独自のウィンドウで実行し、デスクトップとの統合を可能にする、無料のオープンソースでクロスプラットフォームのデスクトップアプリケーション|https://colinduquesnoy.gitlab.io/MellowPlayer/|{{AUR|mellowplayer}} {{AUR|mellowplayer-git}}}}
* {{App|[https://www.mopidy.com/ Mopidy]|[[Music Player Daemon]] のプラグインベースの実装。拡張を使うことで Spotify をストリーミング可能。|https://github.com/mopidy|{{Pkg|mopidy}} + {{AUR|mopidy-spotify}} または {{AUR|despotify-svn}}}}
 
* {{App|Librespot|オープンソースの Spotify ライトライブラリ。公式のクローズドソースの ''libspotif'' を使わなくても Spotify のサービス (ストリーミング) をアプリケーションから使えるようになります。|https://github.com/plietar/librespot|{{AUR|librespot-git}} または {{AUR|librespot-alsa-git}}}}
+
* {{App|[https://www.mopidy.com/ Mopidy]|[[Music Player Daemon]] のプインースの実装。拡張を使うことで Spotify ストリーミング可能。|https://github.com/mopidy|{{Pkg|mopidy}} + {{AUR|mopidy-spotify}}}}
  +
* {{App|ncspot|クロスプラットフォームの ncurses は、ncmpc などにインスパイアされた Rust で書かれた Spotify クライアント。|https://github.com/hrkfdn/ncspot|{{AUR|ncspot}} {{AUR|ncspot-git}}}}
  +
* {{App|Psst|Rust を使用し GUI で作成された高速でマルチプラットフォームの Spotify クライアント。|https://github.com/jpochyla/psst|{{AUR|psst-git}}}}
  +
* {{App|Spot|Gtk/Gnome デスクトップ用の Rust ネイティブな Spotify クライアント。Spotify プレミアムアカウントが必要です。|https://github.com/xou816/spot|{{AUR|spot-client}}}}
  +
* {{App|Spotifyd|UNIX デーモンとして実行されるオープンソースの Spotify クライアント。Spotifyd は公式クライアントと同じように音楽をストリーミングし、軽量でより多くのプラットフォームをサポートします。Spotifyd は Spotify Connect プロトコルもサポートしており、公式クライアントからコントロールできるデバイスとして表示されます。|https://github.com/Spotifyd/spotifyd|{{Pkg|spotifyd}}}}
  +
* {{App|spotify-tui|Rust で書かれたターミナル用の Spotify クライアント。|https://github.com/Rigellute/spotify-tui|{{AUR|spotify-tui}}}}
  +
* {{App|spotify-qt|C++ で書かれ Qt を使った軽量な Spotify クライアント。|https://github.com/kraxarn/spotify-qt|{{AUR|spotify-qt}}}}
  +
* {{App|Tizonia|Linux 向けのコマンドラインクラウド音楽プレーヤーで、Spotify、Google Play Music、YouTube、SoundCloud、Plex サーバ、Chromecast デバイスをサポート。|http://tizonia.org/docs/spotify/|{{AUR|tizonia-all}}}}
  +
* {{App|Spicetify|Spotify クライアントをカスタマイズするための強力なコマンドラインツール。テーマ、拡張機能などが含まれます。|https://spicetify.app/|{{AUR|spicetify-cli}}}}
   
=== 公式 Linux クライアント ===
+
== ントとテクニック ==
   
  +
=== ストレージ サイズを制限する ===
[[AUR]] の {{AUR|spotify}} を使うと自動的にソフトウェアがダウンロードされます。ローカルファイルを再生したい場合は {{Pkg|zenity}} と {{AUR|ffmpeg0.10}} パッケージもインストールする必要があります。
 
   
  +
Spotify はキャッシュ用のストレージサイズを自動的に管理しますが、[[ファイルシステム]] がいっぱいにならないようにサイズ制限を強制したい場合があります。
=== Windows クライアント (Wine) ===
 
   
  +
{{ic|/home/''user''/.config/spotify/prefs}} に [[ヘルプ:読み方#追加, 追記, 作成, 編集|Append]] {{ic|storage.size}} (MB 単位で) を追加します、たとえば 3072MB のストレージ サイズ:
先に [[Wine]] をインストールしてください。
 
   
  +
{{hc|~/.config/spotify/prefs|2=
Spotify のウェブサイトでアカウント登録してから Spotify を取得してください。アプリケーションのアプリ内登録はできません。ただし次の URL を使うことで登録をする前にアプリケーションを取得することができます: [https://www.spotify.com/jp/download/windows/]。
 
  +
storage.size=3072
  +
}}
   
  +
=== グローバルなメディアホットキー ===
登録してインストーラーのコピーをダウンロードしたら Wine でアプリケーションを実行してください。ファイルを右クリックすることで実行できます。実行できない場合、ダウンロードしたディレクトリで下のコマンドを実行することでターミナルから実行できます:
 
   
  +
{{Tip|大抵は[[デスクトップ環境]]に初めから設定されているキーボードショートカットで Spotify クライアントを使うことができます。例えば [[Cinnamon]] ではデフォルトでプレイヤーを制御できるようにバインドが設定されており (Preferences -> Keyboard -> Shortcuts -> Sound and Media)、お好きなキーを押すことで簡単にショートカットを変えることができます。}}
$ wine SpotifySetup.exe
 
 
アプリケーションが正しくインストールされたら、ターミナルから以下のコマンドを実行したり、ALT+F2 ランチャーから実行することで Spotify を起動できます:
 
 
x86_64 版の Arch Linux を使っている場合、以下のようにして実行する必要があります:
 
 
$ wine ~/.wine/drive_c/Program\ Files\ \(x86\)/Spotify/spotify.exe
 
 
x86 版の Arch Linux を使っている場合は、以下のコマンドで実行できます:
 
 
$ wine ~/.wine/drive_c/Program\ Files/Spotify/spotify.exe
 
 
何か問題が発生するときは、winecfg で Windows XP または Windows 7 をエミュレーションするように設定することを推奨します。
 
 
== Tips and tricks ==
 
 
=== グローバルなメディアホットキー ===
 
   
 
Spotify は {{ic|XF86AudioPlay}} などのメディアキーをサポートしています。ただし何も設定をしていなかった場合 Spotify の中でしか動作しません。[[xbindkeys]] などを使用してグローバルのメディアキーの押下を取得してから、以下のどれか方法を使うことで Spotify に転送することができます。xbindkeys を使っている場合、インストールやキーの設定を行った後に Spotify を再起動しないと、キーイベントが正しく取得されません。
 
Spotify は {{ic|XF86AudioPlay}} などのメディアキーをサポートしています。ただし何も設定をしていなかった場合 Spotify の中でしか動作しません。[[xbindkeys]] などを使用してグローバルのメディアキーの押下を取得してから、以下のどれか方法を使うことで Spotify に転送することができます。xbindkeys を使っている場合、インストールやキーの設定を行った後に Spotify を再起動しないと、キーイベントが正しく取得されません。
55行目: 49行目:
 
Spotify クライアントは [https://specifications.freedesktop.org/mpris-spec/latest/ MPRIS2] D-Bus インターフェイスを実装しており外部からコントロールすることができます。
 
Spotify クライアントは [https://specifications.freedesktop.org/mpris-spec/latest/ MPRIS2] D-Bus インターフェイスを実装しており外部からコントロールすることができます。
   
===== Playerctl =====
+
==== pactl (pulseaudio) ====
   
  +
MPRIS プロトコルコマンドにはボリューム コントロールが含まれていません。これは、音量変更要求を無視する Spotify 自体の中で壊れています。しかし、pulseaudio の入力シンクを経由して音量を制御することは可能です。
{{aur|playerctl}} ユーティリティは Spotify プロセスにコマンドを送信するコマンドラインツールを提供します。グローバルに設定する必要があるコマンドは {{ic|play-pause}}, {{ic|next}}, {{ic|previous}} だけです:
 
   
  +
$ pactl set-sink-input-volume "$current_sink_num" +1% #volume up by 1%
$ playerctl play-pause
 
  +
$ pactl set-sink-input-volume "$current_sink_num" -1% #volume down by 1%
$ playerctl next
 
  +
$ pactl set-sink-input-mute "$current_sink_num" toggle #mute toggler
$ playerctl previous
 
   
  +
"$current_sink_num"のシンク番号は、コマンドの出力で確認できます。
Playerctl は始めに見つけたプレイヤーにコマンドを送るため、[[VLC]] などの他のプレイヤーでも使えます。他のプレイヤーを無視させるには、{{ic|--player=spotify}} を引数に付けてください。
 
  +
{{hc|head=$ pactl list sink-inputs|2=
  +
Sink Input #'''3''' << here
  +
Driver: protocol-native.c
  +
[...]
  +
application.name = "Spotify"}}
   
  +
ボリュームを変更するためのスクリプトを作成し、[[デスクトップ環境]] 構成または次のセクションで説明する xdotool を介してキーボード ショートカットなどにバインドできます、ここではいくつかの例を示します。
===== D-Bus =====
 
   
  +
Bash:
上記のツールの代わりとして、[[systemd]] の依存パッケージとしてデフォルトでインストールされる [[D-Bus]] があります。D-Bus を使うことで Spotify などの他のプロセスと確実に対話することができます。
 
  +
#!/bin/bash
  +
LANGUAGE="en_US"
  +
app_name="Spotify"
  +
current_sink_num=''
  +
sink_num_check=''
  +
app_name_check=''
  +
pactl list sink-inputs |while read line; do \
  +
sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
  +
if [ "$sink_num_check" != "" ]; then
  +
current_sink_num="$sink_num_check"
  +
else
  +
app_name_check=$(echo "$line" \
  +
|sed -rn 's/application.name = "([^"]*)"/\1/p')
  +
if [ "$app_name_check" = "$app_name" ]; then
  +
pactl set-sink-input-volume "$current_sink_num" +1%
  +
fi
  +
fi
  +
done
   
  +
このスクリプトは、ユーザー [https://unix.stackexchange.com/users/52126/miko%c5%82ak Mikołak] が [https://unix.stackexchange.com/questions/208784/command-line-per-application-volume-maybe-amixer-or-pactl/209047#209047 この投稿] で行った作業に基づいています
Spotify の現在の曲を再生・停止するには:
 
   
  +
残念ながら、このスクリプトは最速のソリューションではありません。キーボードのホットキーを使用して複数回実行すると、遅延が発生する可能性があります。
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
 
   
  +
より高速な (10倍程度) Python コード (少なくとも Python 3.7 をインストールする必要があります):
コマンドをメディアキーにバインドするには [[Xbindkeys]] をインストールして {{ic|.xbindkeysrc}} を編集し、以下の行を追加してください:
 
   
  +
#!/usr/bin/env python3
# Play/Pause
 
  +
#Author: Marcin Kocur, attribution license: https://creativecommons.org/licenses/by/4.0/
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
 
  +
import subprocess
XF86AudioPlay
 
  +
import os
 
  +
x=0
# Next
 
  +
y=0
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next"
 
  +
env = os.environ
XF86AudioNext
 
  +
env['LANG'] = 'en_US'
 
  +
app = '"Spotify"'
# Previous
 
  +
pactl = subprocess.check_output(['pactl', 'list', 'sink-inputs'], env=env).decode().strip().split()
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous"
 
  +
if app in pactl:
XF86AudioPrev
 
  +
for e in pactl:
 
  +
x += 1
# Stop
 
  +
if e == app:
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop"
 
  +
break
XF86AudioStop
 
  +
for i in pactl[0 : x -1 ]:
 
  +
y += 1
上記のコマンドが機能しない場合、dbus アドレスを設定してみてください:
 
  +
if i == 'Sink' and pactl[y] == 'Input' and '#' in pactl[y + 1]:
 
  +
sink_id = pactl[y+1]
USER=`whoami`
 
  +
if i == 'Volume:' and '%' in pactl[y + 3]:
PROCESS=spotify
 
  +
volume = pactl[y + 3]
PID=`pgrep -o -u $USER $PROCESS`
 
  +
sink_id = sink_id[1: ]
ENVIRON=/proc/$PID/environ
 
if [ -e $ENVIRON ]
+
volume = volume[ : -1 ]
  +
if int(volume) < 100:
then
 
  +
subprocess.run(['pactl', 'set-sink-input-volume', sink_id, '+1%'])
export `grep -z DBUS_SESSION_BUS_ADDRESS $ENVIRON`
 
else
 
echo "Unable to set DBUS_SESSION_BUS_ADDRESS."
 
exit 1
 
fi
 
   
  +
.py ファイルで保存します。最後の行が実行部分ですので、コマンドを調整して音量を下げたり、ミュートを切り替えたりできます。
==== xdotool ====
 
 
{{ic|xdotool}} を使うことでホットキーをアプリケーションに送信することが可能です。以下は Spotify を外側から操作するスクリプトの例です:
 
 
#!/bin/sh
 
 
case $1 in
 
"play")
 
key="XF86AudioPlay"
 
;;
 
"next")
 
key="XF86AudioNext"
 
;;
 
"prev")
 
key="XF86AudioPrev"
 
;;
 
*)
 
echo "Usage: $0 play|next|prev"
 
exit 1
 
;;
 
esac
 
xdotool key --window $(xdotool search --name "Spotify (Premium |Unlimited |Free )?- Linux Preview"|head -n1) $key
 
exit 0
 
 
{{ic|musickeys.sh}} のように名前をつけて、スクリプトに実行可能属性を付与してください:
 
 
$ chmod +x musickeys.sh
 
 
{{ic|./musickeys.sh play}} を実行することで曲の再生を切り替えることができます。[[xbindkeys]] などキーの押下を取得するツールでこのスクリプトを使うようにバインドできます。
 
   
 
=== トラック通知を無効化 ===
 
=== トラック通知を無効化 ===
   
  +
バージョン0.9.10以降、トラック変更通知はデフォルトで有効になりました。それらは非常に煩わしい場合があります。それらを無効にするには、以下を追加:
{{note|{{AUR|SpotCommander}} [http://olejon.github.io/spotcommander/ サーバー] を Spotify と一緒に実行していて以下の設定でトラック通知を無効した場合、モバイル端末で実行している [https://play.google.com/store/apps/details?id&#61;net.olejon.spotcommander&hl&#61;en SpotCommander クライアント] に “No Music is Playing” と表示され、曲名・アーティスト・アルバムアートなどのトラック情報が[http://askubuntu.com/questions/472325/remove-spotify-pop-up-notification-when-a-song-starts/472329#472329 表示されません]。ただし、モバイルクライアントが使えなくなるわけではなく、曲の再生・停止やボリュームの操作などに問題はありません。}}
 
   
  +
{{hc|~/.config/spotify/Users/''spotify login''-user/prefs|2=
バージョン 0.9.10 から、トラック変更の通知がデフォルトで有効になっています。この通知は非常に邪魔に思えるかもしれません。無効にするには、以下の行を {{ic|~/.config/spotify/Users/<spotifylogin>-user/prefs}} に追加してください:
 
  +
ui.track_notifications_enabled=false
 
  +
}}
ui.track_notifications_enabled=false
 
   
{{ic|--ui.track_notifications_enabled&#61;false}} オプションを付けて spotify を実行することでも設定きます。
+
{{ic|1=--ui.track_notifications_enabled=false}} オプションを使用して spotify を起動することでも可能です。
   
 
=== トラック通知を表示 ===
 
=== トラック通知を表示 ===
   
{{AUR|playerctl}} には {{pkg|python-gobject}} と {{pkg|dunst}} のような通知デーモンと一緒に使用するライブラリが付属しており、トラックが変更されたときにアーティストとタイトルを通知で表示することができます。
+
{{Pkg|playerctl}} には {{pkg|python-gobject}} と [[dunst]] のような通知デーモンと一緒に使用するライブラリが付属しており、トラックが変更されたときにアーティストとタイトルを通知で表示することができます。
   
 
#!/usr/bin/env python3
 
#!/usr/bin/env python3
166行目: 151行目:
 
=== 何度も再生されるラジオトラックをスキップ ===
 
=== 何度も再生されるラジオトラックをスキップ ===
   
{{AUR|playerctl}} ライブラリの他の使い道としてラジオで何度も再生されるトラックをスキップすることができます。ラジオ局で聞きたくない曲を低く評価する必要はもうありません。
+
{{Pkg|playerctl}} ライブラリの他の使い道としてラジオで何度も再生されるトラックをスキップすることができます。ラジオ局で聞きたくない曲を低く評価する必要はもうありません。
   
 
#!/usr/bin/env python3
 
#!/usr/bin/env python3
186行目: 171行目:
 
=== コマーシャルをミュート ===
 
=== コマーシャルをミュート ===
   
  +
{{Warning|コマーシャルのミュートは Spotify ではサポートされていないため、一時的に禁止される可能性があります [https://www.theverge.com/2018/3/5/17080920/spotify-cracking-down-piating-premium-free-account]}}
==== blockify ====
 
   
  +
==== spotblock ====
[https://github.com/mikar/blockify blockify] を使えばコマーシャルをミュートできます。[[AUR]] の {{AUR|blockify}} でインストールできます。
 
   
  +
[https://github.com/mahkoh/spotblock spotblock] ({{AUR|spotblock-git}}) は systemd デーモンとして動作するリソース消費の少ない広告ブロッカーです。
Spotify が起動するたびに blockify をバックグラウンドで実行されるようにするには:
 
   
  +
==== Spotify-AdKiller ====
{{bc|<nowiki>
 
#!/bin/sh
 
   
  +
{{AUR|spotify-adkiller-git}} は、Spotify 広告をブロックするもう 1 つの代替手段です。
spotify=/usr/bin/spotify
 
   
  +
==== spotblock-rs ====
if [[ -x $spotify && -x /usr/bin/blockify ]];
 
then
 
blockify &
 
block_pid=$!
 
$spotify
 
trap "kill -9 $block_pid" SIGINT SIGTERM EXIT
 
fi
 
</nowiki>}}
 
   
  +
{{AUR|spotblock-rs}} は、Spotify の広告をミュートする高速かつ軽量のプログラムです。[[PipeWire]] でも機能します。
上のスクリプトを {{ic|/usr/local/bin/spotify}} に配置すれば、Spotify を起動したときに {{ic|/usr/bin/spotify}} が優先されます。他に変更する必要があるところはありません。アップデートしても消えることはありません。
 
   
==== spotblock ====
+
==== Hosts ファイル ====
   
  +
hosts ファイルに以下の行を追加することでも Spotify の広告をブロックできます:
[https://github.com/mahkoh/spotblock spotblock] ({{AUR|spotblock-git}}) は systemd デーモンとして動作するリソース消費の少ない広告ブロッカーです。
 
   
  +
{{hc|/etc/hosts|<nowiki>
==== Spotify-AdKiller ====
 
  +
# Block spotify ads
  +
127.0.0.1 media-match.com
  +
127.0.0.1 adclick.g.doublecklick.net
  +
127.0.0.1 www.googleadservices.com
  +
127.0.0.1 open.spotify.com
  +
127.0.0.1 pagead2.googlesyndication.com
  +
127.0.0.1 desktop.spotify.com
  +
127.0.0.1 googleads.g.doubleclick.net
  +
127.0.0.1 pubads.g.doubleclick.net
  +
127.0.0.1 audio2.spotify.com
  +
127.0.0.1 www.omaze.com
  +
127.0.0.1 omaze.com
  +
127.0.0.1 bounceexchange.com
  +
# 127.0.0.1 spclient.wg.spotify.com
  +
127.0.0.1 securepubads.g.doubleclick.net
  +
127.0.0.1 8.126.154.104.bc.googleusercontent.com
  +
127.0.0.1 104.154.126.8
  +
</nowiki>}}
   
  +
{{Note|''spclient.wg.spotify.com'' は、最近再生された曲だけでなく、ラジオや毎日のミックスもブロックしているようです}}
[https://github.com/SecUpwN/Spotify-AdKiller Spotify-AdKiller] ({{AUR|spotify-adkiller-git}}) は Spotify の広告をブロックします。
 
   
 
=== リモートコントロール ===
 
=== リモートコントロール ===
226行目: 221行目:
 
''yourcommand'' は、サーバーにインストールした [https://code.google.com/p/spotifycmd/ spotifycmd] や上述の Linux 版の dbus スクリプトなどに置き換えてください。
 
''yourcommand'' は、サーバーにインストールした [https://code.google.com/p/spotifycmd/ spotifycmd] や上述の Linux 版の dbus スクリプトなどに置き換えてください。
   
==== SSH で Spotify ウィンドウをつかむ ====
+
==== SSH で Spotify ウィンドウを取得する ====
   
サーバーをリモートで制御するために TeamViewer や VNC などでデスクトップ全体を取得するのでなければ、サーバーからクライアントに Spotify ウィンドウだけ抜き取ることできます。
+
サーバーをリモートで制御するために TeamViewer や VNC などでデスクトップ全体を取得するのでなければ、サーバーからクライアントに Spotify ウィンドウのみを取得することできます。
   
サーバー側に sshd を設定して、サーバーとクライアントの両方に x11vnc をインストールしてください。クライアント側には tigervnc をインストールしてください。それから以下のスクリプトを使うことでデスクトップ全体を取得したり、Spotify ウィンドウだけを取得できます。MPD の GUI クライアントと同じように使うことができます。
+
サーバー側に sshd を設定して、サーバーとクライアントの両方に x11vnc をインストールしてください。クライアント側には tigervnc をインストールしてください。以下のスクリプトを使うことでデスクトップ全体を取得したり、Spotify ウィンドウだけを取得できます。MPD の GUI クライアントと同じように使うことができます。
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
262行目: 257行目:
 
2番目のスクリプトをサーバーの {{ic|~/.bin/vncgetspotify.sh}} にコピーして、1番目のスクリプトをクライアントのどこかに保存してください。
 
2番目のスクリプトをサーバーの {{ic|~/.bin/vncgetspotify.sh}} にコピーして、1番目のスクリプトをクライアントのどこかに保存してください。
   
最後に、Spotify ウィンドウを掴むには、クライアント側で以下を実行:
+
最後に、Spotify ウィンドウを取得するには、クライアント側で以下を実行:
   
 
$ sh vncget.sh
 
$ sh vncget.sh
296行目: 291行目:
   
 
変更を適用するにはデスクトップマネージャを再起動する必要があります。
 
変更を適用するにはデスクトップマネージャを再起動する必要があります。
  +
  +
=== Wayland 下で実行 ===
  +
  +
Xwayland で Spotify を実行すると、特に画面サイズと向きが混在している場合に、いくつかの異常が発生する可能性があります。いくつかのフラグを渡すと、Spotify を Wayland モードで実行できます: {{ic|1=--enable-features=UseOzonePlatform --ozone-platform=wayland}}
  +
  +
デスクトップから起動するときに Wayland モードで起動するために、これらの変更を {{ic|spotify.desktop}} ファイルに追加できます。
  +
{{Note|{{AUR|spotify}} を使用する場合は、代わりに {{ic|~/.config/spotify-flags.conf}} に 1 行に 1 つのフラグを置くことができます。}}
  +
  +
詳細については、前のセクション [[Spotify#HiDPI モード|HiDPI モード]] を参照してください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
=== Gnome のアラート (ビープ) によって Spotify がミュートになってしまう ===
+
=== デスクトップ環境のアラート (ビープ) によって Spotify がミュートになってしまう ===
   
 
PulseAudio の設定ファイルで "module-role-cork" をコメントアウトしてください。
 
PulseAudio の設定ファイルで "module-role-cork" をコメントアウトしてください。
330行目: 334行目:
   
 
Spotify を起動する前に {{ic|LC_NUMERIC}} 環境変数を {{ic|en_US.utf8}} に設定してみてください。
 
Spotify を起動する前に {{ic|LC_NUMERIC}} 環境変数を {{ic|en_US.utf8}} に設定してみてください。
 
=== SpotifyHelper.exe がクラッシュする (Windows クライアント) ===
 
 
Spotify を起動した時に SpotifyHelper.exe がクラッシュする場合、{{ic|winecfg}} で d3d9 ライブラリを無効化してください。"Libraries" タブを開いて、"d3d9" を選んで Add をクリックしてください。無効化するには、edit をクリックして "Disable" オプションを選択してください。
 
 
=== ランチャーアイコンがおかしい (Windows クライアント) ===
 
 
ランチャーに Spotify アイコンが正しく表示されない場合、次の行を {{ic|~/.local/share/applications/wine/Programs/Spotify.desktop}} に追加してください:
 
 
StartupWMClass=spotify.exe
 
   
 
=== GUI スレッドのデッドロック ===
 
=== GUI スレッドのデッドロック ===
353行目: 347行目:
 
* Spotify 1.0.17.75-2 現在、{{ic|1=ui.track_notifications_enabled=false}} は無視されます。また、一部のユーザーは Awesome 3.5.6 からデッドロックが発生しなくなったと報告しています。デッドロックの原因はおそらく Awesome から呼び出されるスクリプトが Spotify の D-Bus プロパティに依存しているためかもしれません。詳しくは [https://github.com/acrisci/playerctl/issues/20] を参照。
 
* Spotify 1.0.17.75-2 現在、{{ic|1=ui.track_notifications_enabled=false}} は無視されます。また、一部のユーザーは Awesome 3.5.6 からデッドロックが発生しなくなったと報告しています。デッドロックの原因はおそらく Awesome から呼び出されるスクリプトが Spotify の D-Bus プロパティに依存しているためかもしれません。詳しくは [https://github.com/acrisci/playerctl/issues/20] を参照。
 
}}
 
}}
 
=== Pulseaudio ===
 
 
[[PulseAudio/トラブルシューティング]] や [https://bbs.archlinux.org/viewtopic.php?pid=1393465#p1393465] を見て下さい。
 
   
 
=== プロキシを使ったときにアルバム画像が表示されない、四角が表示される ===
 
=== プロキシを使ったときにアルバム画像が表示されない、四角が表示される ===
379行目: 369行目:
   
 
ローカルネットワークの送信元と宛先を制限することもできます。
 
ローカルネットワークの送信元と宛先を制限することもできます。
  +
  +
Spotify Connect を使用してワイヤレススピーカーやオーディオビデオレコーダで音楽を再生する場合、ファイアウォールを設定して Spotify の mDNS ルックアップが通るようにする必要があります。ランダムな非特権ポートが使われるため [https://community.spotify.com/t5/Desktop-Linux-Windows-Web-Player/Spotify-Connect-and-iptables-netfilter/td-p/1235049]、ファイアウォールのルールは面倒なものになります。送信元ポート 1900 または 5353 を以下のように設定してください:
  +
  +
iptables -A UDP -p udp --sport 1900 --dport 1025:65535 -j ACCEPT -m comment --comment spotify
  +
iptables -A UDP -p udp --sport 5353 --dport 1025:65535 -j ACCEPT -m comment --comment spotify
   
 
=== ダークテーマを使っている場合に検索バーのテキストが読めない ===
 
=== ダークテーマを使っている場合に検索バーのテキストが読めない ===
398行目: 393行目:
 
/usr/share/spotify/spotify-client/spotify -stylesheet=/home/user/spotify-override.css
 
/usr/share/spotify/spotify-client/spotify -stylesheet=/home/user/spotify-override.css
   
=== ローカルファイルを再生するとセグメンテーション違反が発生する ===
+
=== ローカルファイルを再生できない ===
  +
  +
ローカルファイルを再生しようとするとセグメンテーション違反や以下のようなエラーメッセージが発生する場合:
  +
  +
This song is not available. If you have the file on your computer you can import it.
  +
  +
依存パッケージが欠けているのが原因です。PulseAudio を使っている場合、{{aur|ffmpeg-compat-54}} をインストールすることで解決します。インストール時に PGP の検証エラーが起こる場合は適切な PGP 鍵をインポートしてください:
  +
  +
$ gpg --keyserver pgp.mit.edu --recv-keys FCF986EA15E6E293A5644F10B4322F04D67658D8
  +
  +
=== ウィンドウマネージャのルールが反映されない ===
  +
  +
特定のワークスペースで Spotify を起動したり、起動時に最大化するなどのルールをウィンドウマネージャで設定しても Spotify には反映されません。Spotify が ICCCM の仕様に違反しており、ウィンドウを作成する前に ''WM_CLASS'' プロパティを設定しないためです。[https://github.com/dasJ/spotifywm spotifywm] を使用することで解決できます。
  +
  +
=== GUI の境界線がなくなり、cinnamon パネル上の画面全体を占有する ===
  +
  +
ウィンドウの境界が消えてしまうという問題があって、アプリがフルスクリーンになっても、ウィンドウをドラッグしたり、シナモンのサイズを変更したりできない場合は、デフォルトでテキストファイル {{ic|/home/yourusername/.config/Spotify/Users/yourusername-user/prefs}} にある設定が原因かもしれません。
  +
  +
app.window.position.width=1366
  +
app.window.position.height=768
  +
  +
おそらく、両方の解像度が "メイン" モニタの解像度以上の値に一致する場合、これは二つのモニタから一つのモニタだけに移ったときに起こる可能性があります。解決策として、 Spotify を閉じ、 {{ic|prefs}} ファイルを編集して上記の両方の設定を削除し、保存してから再度 Spotify を実行してください。
  +
  +
=== Wayland 環境で設定が開けない ===
  +
  +
Wayland を使用している場合、"設定" ボタンをクリックしても何も起こりません。代わりにキーボードを使用すると機能します(矢印と enter)
  +
  +
こちらも参照して下さい。[https://community.spotify.com/t5/Desktop-Linux/Settings-don-t-open-on-Linux/td-p/1478736]
  +
  +
=== 起動時にクラッシュする ===
  +
起動時にアプリケーションがクラッシュし、次のエラーメッセージが表示された場合
  +
  +
[NNN:FATAL:gpu_data_manager_impl_private.cc(439)] GPU process isn't usable. Goodbye
  +
  +
{{ic|-no-zygote}} フラグを指定して {{ic|spotify}} を実行してみてください。
  +
  +
=== ローカルフォルダを追加すると Spotify がクラッシュする ===
  +
Local Files オプション内の 'ソースを追加する' ボタンが Spotify をクラッシュさせた時。使用可能な回避策はこちらを参照 [https://www.reddit.com/r/archlinux/comments/knyfpo/how_to_play_local_files_with_spotify/ this reddit post] または、 [[Flatpak]] バージョンをインストールすることもできます。
  +
  +
=== /usr/lib/libcurl-gnutls.so.4 error ===
  +
  +
エラーが発生した場合:
  +
  +
spotify: /usr/lib/libcurl-gnutls.so.4: no version information available (required by spotify)
   
  +
{{ic|~/.cache/spotify}} を削除します。
依存パッケージが欠けているのが原因です。PulseAudio を使っている場合、{{aur|ffmpeg-compat-54}} をインストールすることで解決します。
 
   
 
==参照==
 
==参照==
*[https://github.com/acrisci/playerctl playerctl]: メディアプレーヤーを操作するためのコマンドラインユーティリティ・ライブラリ
+
*[https://github.com/acrisci/playerctl playerctl] メディアプレーヤーを操作するためのコマンドラインユーティリティ・ライブラリ
*[[SpotCommander]]: Spotify のウェブベースのリモートコントロール
+
*[[SpotCommander]] Spotify のウェブベースのリモートコントロール
  +
*[https://www.spotify.com/jp/download/linux/ Spotify for Linux] — Spotify の Linux クライアントのホームページ
*http://www.spotify.com/int/help/faq/wine/
 
*http://www.spotify.com/int/download/previews/
 

2023年11月22日 (水) 02:42時点における最新版

Spotify は、フリーミアム型のビジネスモデルを採用したデジタル音楽ストリーミングサービスです。この記事は主に、Spotify が積極的にサポートしていない、半公式でプロプライエタリな Spotify for Linux クライアントについて書かれています [1] その他に、オンラインプレイヤー や多くのオープンソース サードパーティのクライアント について紹介。

目次

インストール

spotify-launcherインストール します。このパッケージは、ホームディレクトリ内のユーザーごとのインストールを管理し、Spotify が pacman とは独立して自身を更新できるようにします (他のオペレーティング システムで Spotify が自己更新する方法と似ています。)

pacman を使用して Spotify の更新を管理したい場合は、代わりに for Linux を再パッケージ化する spotifyAUR を使用してください。ローカルファイルを追加して再生する必要がある場合は、zenityffmpeg4.4 を追加でインストールする必要があります。

サードパーティクライアント

ノート: ここにリストされているすべてのクライアントは、Spotify からのストリーミングにプレミアムアカウントが 必要 です。
  • Librespot — オープンソースの Spotify クライアントライブラリ。公式のクローズドソースの libspotify を使わなくても Spotify のサービス (ストリーミング) をアプリケーションから使えるようになります。
https://github.com/plietar/librespot || librespot-gitAUR
  • MellowPlayer — Web ベースの音楽ストリーミングサービスを独自のウィンドウで実行し、デスクトップとの統合を可能にする、無料のオープンソースでクロスプラットフォームのデスクトップアプリケーション
https://colinduquesnoy.gitlab.io/MellowPlayer/ || mellowplayerAUR mellowplayer-gitAUR
  • MopidyMusic Player Daemon のプラグインベースの実装。拡張を使うことで Spotify をストリーミング可能。
https://github.com/mopidy || mopidy + mopidy-spotifyAUR
  • ncspot — クロスプラットフォームの ncurses は、ncmpc などにインスパイアされた Rust で書かれた Spotify クライアント。
https://github.com/hrkfdn/ncspot || ncspotAUR ncspot-gitAUR
  • Psst — Rust を使用し GUI で作成された高速でマルチプラットフォームの Spotify クライアント。
https://github.com/jpochyla/psst || psst-gitAUR
  • Spot — Gtk/Gnome デスクトップ用の Rust ネイティブな Spotify クライアント。Spotify プレミアムアカウントが必要です。
https://github.com/xou816/spot || spot-clientAUR
  • Spotifyd — UNIX デーモンとして実行されるオープンソースの Spotify クライアント。Spotifyd は公式クライアントと同じように音楽をストリーミングし、軽量でより多くのプラットフォームをサポートします。Spotifyd は Spotify Connect プロトコルもサポートしており、公式クライアントからコントロールできるデバイスとして表示されます。
https://github.com/Spotifyd/spotifyd || spotifyd
  • spotify-tui — Rust で書かれたターミナル用の Spotify クライアント。
https://github.com/Rigellute/spotify-tui || spotify-tuiAUR
  • spotify-qt — C++ で書かれ Qt を使った軽量な Spotify クライアント。
https://github.com/kraxarn/spotify-qt || spotify-qtAUR
  • Tizonia — Linux 向けのコマンドラインクラウド音楽プレーヤーで、Spotify、Google Play Music、YouTube、SoundCloud、Plex サーバ、Chromecast デバイスをサポート。
http://tizonia.org/docs/spotify/ || tizonia-allAUR
  • Spicetify — Spotify クライアントをカスタマイズするための強力なコマンドラインツール。テーマ、拡張機能などが含まれます。
https://spicetify.app/ || spicetify-cliAUR

ヒントとテクニック

ストレージ サイズを制限する

Spotify はキャッシュ用のストレージサイズを自動的に管理しますが、ファイルシステム がいっぱいにならないようにサイズ制限を強制したい場合があります。

/home/user/.config/spotify/prefsAppend storage.size (MB 単位で) を追加します、たとえば 3072MB のストレージ サイズ:

~/.config/spotify/prefs
storage.size=3072

グローバルなメディアホットキー

ヒント: 大抵はデスクトップ環境に初めから設定されているキーボードショートカットで Spotify クライアントを使うことができます。例えば Cinnamon ではデフォルトでプレイヤーを制御できるようにバインドが設定されており (Preferences -> Keyboard -> Shortcuts -> Sound and Media)、お好きなキーを押すことで簡単にショートカットを変えることができます。

Spotify は XF86AudioPlay などのメディアキーをサポートしています。ただし何も設定をしていなかった場合 Spotify の中でしか動作しません。xbindkeys などを使用してグローバルのメディアキーの押下を取得してから、以下のどれか方法を使うことで Spotify に転送することができます。xbindkeys を使っている場合、インストールやキーの設定を行った後に Spotify を再起動しないと、キーイベントが正しく取得されません。

MPRIS

Spotify クライアントは MPRIS2 D-Bus インターフェイスを実装しており外部からコントロールすることができます。

pactl (pulseaudio)

MPRIS プロトコルコマンドにはボリューム コントロールが含まれていません。これは、音量変更要求を無視する Spotify 自体の中で壊れています。しかし、pulseaudio の入力シンクを経由して音量を制御することは可能です。

$ pactl set-sink-input-volume "$current_sink_num" +1% #volume up by 1%
$ pactl set-sink-input-volume "$current_sink_num" -1% #volume down by 1%
$ pactl set-sink-input-mute "$current_sink_num" toggle #mute toggler

"$current_sink_num"のシンク番号は、コマンドの出力で確認できます。

$ pactl list sink-inputs
Sink Input #3 << here
Driver: protocol-native.c
[...]
application.name = "Spotify"

ボリュームを変更するためのスクリプトを作成し、デスクトップ環境 構成または次のセクションで説明する xdotool を介してキーボード ショートカットなどにバインドできます、ここではいくつかの例を示します。

Bash:

#!/bin/bash
LANGUAGE="en_US"
app_name="Spotify"
current_sink_num=
sink_num_check=
app_name_check=
pactl list sink-inputs |while read line; do \
    sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
    if [ "$sink_num_check" != "" ]; then
        current_sink_num="$sink_num_check"
    else
        app_name_check=$(echo "$line" \
            |sed -rn 's/application.name = "([^"]*)"/\1/p')
            if [ "$app_name_check" = "$app_name" ]; then
                pactl set-sink-input-volume "$current_sink_num" +1%
            fi
    fi
done

このスクリプトは、ユーザー Mikołakこの投稿 で行った作業に基づいています

残念ながら、このスクリプトは最速のソリューションではありません。キーボードのホットキーを使用して複数回実行すると、遅延が発生する可能性があります。

より高速な (10倍程度) Python コード (少なくとも Python 3.7 をインストールする必要があります):

#!/usr/bin/env python3
#Author: Marcin Kocur, attribution license: https://creativecommons.org/licenses/by/4.0/
import subprocess
import os
x=0
y=0
env = os.environ
env['LANG'] = 'en_US'
app = '"Spotify"'
pactl = subprocess.check_output(['pactl', 'list', 'sink-inputs'], env=env).decode().strip().split()
if app in pactl:
    for e in pactl:
        x += 1
        if e == app:
            break
    for i in pactl[0 : x -1 ]:
        y += 1
        if i == 'Sink' and pactl[y] == 'Input' and '#' in pactl[y + 1]:
            sink_id = pactl[y+1]
        if i == 'Volume:' and '%' in pactl[y + 3]:
            volume = pactl[y + 3]
    sink_id = sink_id[1: ]
    volume = volume[ : -1 ]
    if int(volume) < 100:
        subprocess.run(['pactl', 'set-sink-input-volume', sink_id, '+1%'])

.py ファイルで保存します。最後の行が実行部分ですので、コマンドを調整して音量を下げたり、ミュートを切り替えたりできます。

トラック通知を無効化

バージョン0.9.10以降、トラック変更通知はデフォルトで有効になりました。それらは非常に煩わしい場合があります。それらを無効にするには、以下を追加:

~/.config/spotify/Users/spotify login-user/prefs
ui.track_notifications_enabled=false

--ui.track_notifications_enabled=false オプションを使用して spotify を起動することでも可能です。

トラック通知を表示

playerctl には python-gobjectdunst のような通知デーモンと一緒に使用するライブラリが付属しており、トラックが変更されたときにアーティストとタイトルを通知で表示することができます。

#!/usr/bin/env python3

from gi.repository import Playerctl, GLib
from subprocess import Popen

player = Playerctl.Player()

def on_track_change(player, e):
    track_info = '{artist} - {title}'.format(artist=player.get_artist(), title=player.get_title())
    Popen(['notify-send', track_info])

player.on('metadata', on_track_change)

GLib.MainLoop().run()

何度も再生されるラジオトラックをスキップ

playerctl ライブラリの他の使い道としてラジオで何度も再生されるトラックをスキップすることができます。ラジオ局で聞きたくない曲を低く評価する必要はもうありません。

#!/usr/bin/env python3

from gi.repository import Playerctl, GLib

player = Playerctl.Player()

played_out = ['Zu Fuss', 'Walk And Talk', 'Neuland']

def on_track_change(player, e):
    if player.get_title() in played_out:
        player.next()

player.on('metadata', on_track_change)

GLib.MainLoop().run()

コマーシャルをミュート

警告: コマーシャルのミュートは Spotify ではサポートされていないため、一時的に禁止される可能性があります [2]

spotblock

spotblock (spotblock-gitAUR) は systemd デーモンとして動作するリソース消費の少ない広告ブロッカーです。

Spotify-AdKiller

spotify-adkiller-gitAUR は、Spotify 広告をブロックするもう 1 つの代替手段です。

spotblock-rs

spotblock-rsAUR は、Spotify の広告をミュートする高速かつ軽量のプログラムです。PipeWire でも機能します。

Hosts ファイル

hosts ファイルに以下の行を追加することでも Spotify の広告をブロックできます:

/etc/hosts
# Block spotify ads
127.0.0.1 media-match.com
127.0.0.1 adclick.g.doublecklick.net
127.0.0.1 www.googleadservices.com
127.0.0.1 open.spotify.com
127.0.0.1 pagead2.googlesyndication.com
127.0.0.1 desktop.spotify.com
127.0.0.1 googleads.g.doubleclick.net
127.0.0.1 pubads.g.doubleclick.net
127.0.0.1 audio2.spotify.com
127.0.0.1 www.omaze.com
127.0.0.1 omaze.com
127.0.0.1 bounceexchange.com
# 127.0.0.1 spclient.wg.spotify.com
127.0.0.1 securepubads.g.doubleclick.net
127.0.0.1 8.126.154.104.bc.googleusercontent.com
127.0.0.1 104.154.126.8
ノート: spclient.wg.spotify.com は、最近再生された曲だけでなく、ラジオや毎日のミックスもブロックしているようです

リモートコントロール

SSH でコマンドを送信

サーバー上に ssh がセットアップされている場合、以下のコマンドでクライアントからリモートの Spotify インスタンスに制御コマンドを送信できます:

$ ssh user@host yourcommand

yourcommand は、サーバーにインストールした spotifycmd や上述の Linux 版の dbus スクリプトなどに置き換えてください。

SSH で Spotify ウィンドウを取得する

サーバーをリモートで制御するために TeamViewer や VNC などでデスクトップ全体を取得するのでなければ、サーバーからクライアントに Spotify ウィンドウのみを取得することもできます。

サーバー側に sshd を設定して、サーバーとクライアントの両方に x11vnc をインストールしてください。クライアント側には tigervnc をインストールしてください。以下のスクリプトを使うことでデスクトップ全体を取得したり、Spotify ウィンドウだけを取得できます。MPD の GUI クライアントと同じように使うことができます。

#!/bin/bash
# vncget.sh

if [[ $1 == all ]];then
  ssh -f -t -L 5900:localhost:5900 user@host "x11vnc -q -display :0 -auth .Xauthority"
else
  ssh -f -t -L 5900:localhost:5900 user@host ".bin/vncgetspotify.sh"
fi
 
for i in {1..4}; do
  sleep 2
  if vncviewer localhost:0; then break; fi
done
#!/bin/bash
# vncgetspotify.sh

export DISPLAY=:0

id=$(wmctrl -lx | awk '/spotify.exe.Wine/ {print $1}')
[[ -z $id ]] && id=$(wmctrl -lx | awk '/spotify.Spotify/ {print $1}')

x11vnc -sid $id -display :0 -auth .Xauthority

2番目のスクリプトをサーバーの ~/.bin/vncgetspotify.sh にコピーして、1番目のスクリプトをクライアントのどこかに保存してください。

最後に、Spotify ウィンドウを取得するには、クライアント側で以下を実行:

$ sh vncget.sh

デスクトップ全体を取得する場合:

$ sh vncget.sh all

HiDPI モード

最新の Spotify ビルドも DPI に対応していないため、ターミナルコマンドでインターフェイスをスケールする量を指定します:

$ spotify --force-device-scale-factor=X

X はインターフェイスをスケールする量に置き換えて下さい。例: 2。

デスクトップファイルを使用する場合、パッケージを更新したときにファイルが上書きされないように、ローカルのアプリケーションフォルダにデスクトップファイルをコピーしてください:

$ cp /usr/share/applications/spotify.desktop ~/.local/share/applications/

~/.local/share/applications/spotify.desktop を編集して --force-device-scale-factor オプションを追加:

spotify.desktop
[Desktop Entry]
Name=Spotify
GenericName=Music Player
Comment=Spotify streaming music client
Icon=spotify-client
Exec=spotify --force-device-scale-factor=2 %U
TryExec=spotify
Terminal=false
Type=Application
Categories=Audio;Music;Player;AudioVideo
MimeType=x-scheme-handler/spotify

変更を適用するにはデスクトップマネージャを再起動する必要があります。

Wayland 下で実行

Xwayland で Spotify を実行すると、特に画面サイズと向きが混在している場合に、いくつかの異常が発生する可能性があります。いくつかのフラグを渡すと、Spotify を Wayland モードで実行できます: --enable-features=UseOzonePlatform --ozone-platform=wayland

デスクトップから起動するときに Wayland モードで起動するために、これらの変更を spotify.desktop ファイルに追加できます。

ノート: spotifyAUR を使用する場合は、代わりに ~/.config/spotify-flags.conf に 1 行に 1 つのフラグを置くことができます。

詳細については、前のセクション HiDPI モード を参照してください。

トラブルシューティング

デスクトップ環境のアラート (ビープ) によって Spotify がミュートになってしまう

PulseAudio の設定ファイルで "module-role-cork" をコメントアウトしてください。

テキストエディタで /etc/pulse/default.pa を開いて以下の行をコメントアウトしてください:

load-module module-role-cork 

もしくは以下のコマンドを実行してアンロードしてください:

$ pactl unload-module module-role-cork

検索を使うとインターフェイスが点滅してクラッシュする

Spotify は古いバージョンの Chromium Embedded Framework を使っており検索を使おうとするとバグによってクラッシュします。以下のコマンドラインオプションを使うことで回避できます:

--force-device-scale-factor=1.0000001

DWM で Spotify Linux を使用した時に画像が点滅したり正しく表示されない

フローティングウィンドウで spotify を起動してください。

以下のルールを config.h の rules 配列に追加してください:

 { "Spotify",     NULL,       NULL,        2,         True,     -1 },

上記の設定でウィンドウモードと関係なく spotify タグが "2" のフローティングウィンドウとして起動されます。新しい設定を適用するために dwm を再コンパイル・インストールしてください。

検索やブラウザ、ラジオが動作しない

ブラウジングなどのタブで何も表示されなかったり、検索フィールドが機能しなかったりラジオページが表示されない場合 (起動したときにフリーズして入力に反応しなくなる)、ロケールの設定が原因かもしれません (バグレポート を参照)。

Spotify を起動する前に LC_NUMERIC 環境変数を en_US.utf8 に設定してみてください。

GUI スレッドのデッドロック

Awesome などのタイル型ウィンドウマネージャでは、新しい曲やプレイリストをダブルクリックしたときにデッドロックが発生することがあります。~/.config/spotify/Users/[1-9]*-user/prefs ファイルを編集して以下の行を追加してください:

ui.track_notifications_enabled=false

そして Spotify を再起動します。

ノート:
  • 問題の原因は複数存在し、上記の修正では特定のバージョンの Spotify クライアントと Awesome でしか問題が解決されません。Debian や Ubuntu ユーザーは Spotify 0.9.17.1.g9b85d436 と Awesome 3.4.15 で別の原因があると報告しています。
  • Spotify 1.0.17.75-2 現在、ui.track_notifications_enabled=false は無視されます。また、一部のユーザーは Awesome 3.5.6 からデッドロックが発生しなくなったと報告しています。デッドロックの原因はおそらく Awesome から呼び出されるスクリプトが Spotify の D-Bus プロパティに依存しているためかもしれません。詳しくは [3] を参照。

プロキシを使ったときにアルバム画像が表示されない、四角が表示される

spotify を終了して、spotify の設定 ~/.config/spotify/prefs を開いて下さい。

@https を @http に変更してください:

 network.proxy.addr="your-proxy.com:80@http"
 network.proxy.mode=2

[4] を参照。

ノート: 1.0.17 現在、上記のように https を http に置き換えると全く接続できなくなることがあります。その場合、GUI では 'no proxy' に設定してから proxychains-ng で全ての TCP 接続を強制的にプロキシを通すようにする方法があります。

Spotify でローカルネットワーク上の他のデバイスが検出されない

ファイアウォールを使っている場合、UDP と TCP のポート 57621 を開いて下さい。iptablesシンプルなステートフルファイアウォールを使用している場合、以下で設定できます:

iptables -A TCP -p tcp --dport 57621 -j ACCEPT -m comment --comment spotify
iptables -A UDP -p udp --dport 57621 -j ACCEPT -m comment --comment spotify

ローカルネットワークの送信元と宛先を制限することもできます。

Spotify Connect を使用してワイヤレススピーカーやオーディオビデオレコーダで音楽を再生する場合、ファイアウォールを設定して Spotify の mDNS ルックアップが通るようにする必要があります。ランダムな非特権ポートが使われるため [5]、ファイアウォールのルールは面倒なものになります。送信元ポート 1900 または 5353 を以下のように設定してください:

iptables -A UDP -p udp --sport 1900 --dport 1025:65535 -j ACCEPT -m comment --comment spotify
iptables -A UDP -p udp --sport 5353 --dport 1025:65535 -j ACCEPT -m comment --comment spotify

ダークテーマを使っている場合に検索バーのテキストが読めない

検索バーのテキストは白色に決められているため、Qt のダークテーマを使っている場合見えなくなります。色を上書きすることで解決できます。

まず (ホームフォルダなど) 読み書きができる場所に css ファイルを作成してください。名前は何でもかまいません (例: spotify-override.css)。

作成した css ファイルを開いて以下を追加します:

QLineEdit { color: #000 }

ファイルを保存して終了してください。次に、Spotify のランチャーの末尾に以下を追加します (css ファイルのパスは実際のパスに置き換えて下さい):

-stylesheet=/home/user/spotify-overide.css

起動パスは以下のようになります:

/usr/share/spotify/spotify-client/spotify -stylesheet=/home/user/spotify-override.css

ローカルファイルを再生できない

ローカルファイルを再生しようとするとセグメンテーション違反や以下のようなエラーメッセージが発生する場合:

This song is not available. If you have the file on your computer you can import it.

依存パッケージが欠けているのが原因です。PulseAudio を使っている場合、ffmpeg-compat-54AUR をインストールすることで解決します。インストール時に PGP の検証エラーが起こる場合は適切な PGP 鍵をインポートしてください:

$ gpg --keyserver pgp.mit.edu --recv-keys FCF986EA15E6E293A5644F10B4322F04D67658D8

ウィンドウマネージャのルールが反映されない

特定のワークスペースで Spotify を起動したり、起動時に最大化するなどのルールをウィンドウマネージャで設定しても Spotify には反映されません。Spotify が ICCCM の仕様に違反しており、ウィンドウを作成する前に WM_CLASS プロパティを設定しないためです。spotifywm を使用することで解決できます。

GUI の境界線がなくなり、cinnamon パネル上の画面全体を占有する

ウィンドウの境界が消えてしまうという問題があって、アプリがフルスクリーンになっても、ウィンドウをドラッグしたり、シナモンのサイズを変更したりできない場合は、デフォルトでテキストファイル /home/yourusername/.config/Spotify/Users/yourusername-user/prefs にある設定が原因かもしれません。

app.window.position.width=1366
app.window.position.height=768

おそらく、両方の解像度が "メイン" モニタの解像度以上の値に一致する場合、これは二つのモニタから一つのモニタだけに移ったときに起こる可能性があります。解決策として、 Spotify を閉じ、 prefs ファイルを編集して上記の両方の設定を削除し、保存してから再度 Spotify を実行してください。

Wayland 環境で設定が開けない

Wayland を使用している場合、"設定" ボタンをクリックしても何も起こりません。代わりにキーボードを使用すると機能します(矢印と enter)

こちらも参照して下さい。[6]

起動時にクラッシュする

起動時にアプリケーションがクラッシュし、次のエラーメッセージが表示された場合

[NNN:FATAL:gpu_data_manager_impl_private.cc(439)] GPU process isn't usable. Goodbye

-no-zygote フラグを指定して spotify を実行してみてください。

ローカルフォルダを追加すると Spotify がクラッシュする

Local Files オプション内の 'ソースを追加する' ボタンが Spotify をクラッシュさせた時。使用可能な回避策はこちらを参照 this reddit post または、 Flatpak バージョンをインストールすることもできます。

/usr/lib/libcurl-gnutls.so.4 error

エラーが発生した場合:

spotify: /usr/lib/libcurl-gnutls.so.4: no version information available (required by spotify)

~/.cache/spotify を削除します。

参照

  • playerctl — メディアプレーヤーを操作するためのコマンドラインユーティリティ・ライブラリ
  • SpotCommander — Spotify のウェブベースのリモートコントロール
  • Spotify for Linux — Spotify の Linux クライアントのホームページ