「Spotify」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:音声/動画 Category:Wine en:Spotify [http://www.spotify.com/ Spotify] は数百万もの曲にアクセスすることができるデジタル音...」)
 
 
(5人の利用者による、間の44版が非表示)
1行目: 1行目:
[[Category:音声/動画]]
+
[[Category:音]]
[[Category:Wine]]
+
[[Category:ストリーミング]]
 
[[en:Spotify]]
 
[[en:Spotify]]
  +
[[es:Spotify]]
[http://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 クライアントを選択するのも良いでしょう。両方のクライアントをインストールする必要はありません。{{AUR|mopidy}} + {{AUR|mopidy-spotify}} または {{AUR|despotify-svn}} のようなオープンソースクライアントも存在しますが、基本的にプレミアムアカウントでないと動作しません。https://play.spotify.com/ で使えるオンラインプレイヤーも存在します (flash が必要です)。
 
   
  +
{{Note|ここにリストされているすべてのクライアントは、Spotify からのストリーミングにプレミアムアカウントが '''必要''' です。}}
=== Linux ===
 
   
  +
* {{App|Librespot|オープンソースの Spotify クライアントライブラリ。公式のクローズドソースの ''libspotify'' を使わなくても Spotify のサービス (ストリーミング) をアプリケーションから使えるようになります。|https://github.com/plietar/librespot|{{AUR|librespot-git}}}}
[[AUR]] の {{AUR|spotify}} を使うと自動的にソフトウェアがダウンロードされます。ローカルファイルを再生したい場合は {{pkg|ffmpeg-compat}} もインストールする必要があります。
 
  +
* {{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}}}}
  +
* {{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}}}}
   
  +
== ヒントとテクニック ==
=== Windows (Wine) ===
 
   
  +
=== ストレージ サイズを制限する ===
[[Wine]] を見て下さい。
 
   
  +
Spotify はキャッシュ用のストレージサイズを自動的に管理しますが、[[ファイルシステム]] がいっぱいにならないようにサイズ制限を強制したい場合があります。
Obtaining Spotify can be done by registering for an account on their Website, the application does not offer in-app registration. However you can obtain the application prior to registering by using the following URL. [http://download.spotify.com/Spotify%20Installer.exe]
 
   
  +
{{ic|/home/''user''/.config/spotify/prefs}} に [[ヘルプ:読み方#追加, 追記, 作成, 編集|Append]] {{ic|storage.size}} (MB 単位で) を追加します、たとえば 3072MB のストレージ サイズ:
After you have registered and downloaded your copy of the installer you will need to run the application through Wine, depending on your setup you may be able to run the application by right clicking the file. If not terminal will work just fine, as long as you run the below command in the directory of your download.
 
   
  +
{{hc|~/.config/spotify/prefs|2=
$ wine Spotify\ Installer.exe
 
  +
storage.size=3072
  +
}}
   
  +
=== グローバルなメディアホットキー ===
Once the application is successfully installed you may run Spotify by using one of the following commands in terminal, or in the ALT+F2 launcher:
 
   
  +
{{Tip|大抵は[[デスクトップ環境]]に初めから設定されているキーボードショートカットで Spotify クライアントを使うことができます。例えば [[Cinnamon]] ではデフォルトでプレイヤーを制御できるようにバインドが設定されており (Preferences -> Keyboard -> Shortcuts -> Sound and Media)、お好きなキーを押すことで簡単にショートカットを変えることができます。}}
If you use a x86_64 copy of ArchLinux, you will have to run it like this:
 
   
  +
Spotify は {{ic|XF86AudioPlay}} などのメディアキーをサポートしています。ただし何も設定をしていなかった場合 Spotify の中でしか動作しません。[[xbindkeys]] などを使用してグローバルのメディアキーの押下を取得してから、以下のどれか方法を使うことで Spotify に転送することができます。xbindkeys を使っている場合、インストールやキーの設定を行った後に Spotify を再起動しないと、キーイベントが正しく取得されません。
$ wine "/home/username/.wine/drive_c/Program Files (x86)/Spotify/spotify.exe"
 
   
  +
==== MPRIS ====
If you use a x86 copy of ArchLinux, you can use this command just fine:
 
   
  +
Spotify クライアントは [https://specifications.freedesktop.org/mpris-spec/latest/ MPRIS2] D-Bus インターフェイスを実装しており外部からコントロールすることができます。
$ wine ~/.wine/drive_c/Program\ Files/Spotify/spotify.exe
 
   
  +
==== pactl (pulseaudio) ====
If you have any additional problems, I recommend setting the winecfg to Windows XP or Windows 7 emulation.
 
   
  +
MPRIS プロトコルコマンドにはボリューム コントロールが含まれていません。これは、音量変更要求を無視する Spotify 自体の中で壊れています。しかし、pulseaudio の入力シンクを経由して音量を制御することは可能です。
== グローバルなメディアホットキー ==
 
   
  +
$ pactl set-sink-input-volume "$current_sink_num" +1% #volume up by 1%
Spotify has support for media keys like {{ic|XF86AudioPlay}}, but out of the box they only work inside Spotify. We can use for example [[xbindkeys]] to catch the global media keypresses, and then forward them to Spotify using one of the methods below.
 
  +
$ 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"のシンク番号は、コマンドの出力で確認できます。
=== Linux ===
 
  +
{{hc|head=$ pactl list sink-inputs|2=
  +
Sink Input #'''3''' << here
  +
Driver: protocol-native.c
  +
[...]
  +
application.name = "Spotify"}}
   
  +
ボリュームを変更するためのスクリプトを作成し、[[デスクトップ環境]] 構成または次のセクションで説明する xdotool を介してキーボード ショートカットなどにバインドできます、ここではいくつかの例を示します。
==== Playerctl ====
 
   
  +
Bash:
{{aur|playerctl}} ユーティリティは Spotify プロセスにコマンドを送信するコマンドラインツールを提供します。グローバルに設定する必要があるコマンドは {{ic|play-pause}}, {{ic|next}}, {{ic|previous}} だけです:
 
  +
#!/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 この投稿] で行った作業に基づいています
$ playerctl play-pause
 
$ playerctl next
 
$ playerctl previous
 
   
  +
残念ながら、このスクリプトは最速のソリューションではありません。キーボードのホットキーを使用して複数回実行すると、遅延が発生する可能性があります。
Playerctl は始めに見つけたプレイヤーにコマンドを送るため、[[VLC]] などの他のプレイヤーでも使えます。他のプレイヤーを無視させるには、{{ic|--player&#61;spotify}} を引数に付けてください。
 
   
  +
より高速な (10倍程度) Python コード (少なくとも Python 3.7 をインストールする必要があります):
==== xdotool ====
 
   
  +
#!/usr/bin/env python3
With the help of {{ic|xdotool}} it is possible to send your hotkeys to the application. The following script is an example of how to control Spotify from the outside:
 
  +
#Author: Marcin Kocur, attribution license: https://creativecommons.org/licenses/by/4.0/
 
  +
import subprocess
#!/bin/sh
 
  +
import os
 
  +
x=0
case $1 in
 
  +
y=0
"play")
 
  +
env = os.environ
key="XF86AudioPlay"
 
  +
env['LANG'] = 'en_US'
;;
 
"next")
+
app = '"Spotify"'
  +
pactl = subprocess.check_output(['pactl', 'list', 'sink-inputs'], env=env).decode().strip().split()
key="XF86AudioNext"
 
  +
if app in pactl:
;;
 
  +
for e in pactl:
"prev")
 
key="XF86AudioPrev"
+
x += 1
;;
+
if e == app:
*)
+
break
echo "Usage: $0 play|next|prev"
+
for i in pactl[0 : x -1 ]:
exit 1
+
y += 1
  +
if i == 'Sink' and pactl[y] == 'Input' and '#' in pactl[y + 1]:
;;
 
  +
sink_id = pactl[y+1]
esac
 
  +
if i == 'Volume:' and '%' in pactl[y + 3]:
xdotool key --window $(xdotool search --name "Spotify (Premium |Unlimited |Free )?- Linux Preview"|head -n1) $key
 
  +
volume = pactl[y + 3]
exit 0
 
  +
sink_id = sink_id[1: ]
 
  +
volume = volume[ : -1 ]
Let us call it {{ic|musickeys.sh}}. Make the script executable:
 
  +
if int(volume) < 100:
 
  +
subprocess.run(['pactl', 'set-sink-input-volume', sink_id, '+1%'])
$ chmod +x musickeys.sh
 
 
By executing {{ic|./musickeys.sh play}} you can now toggle playing a song. Now you can bind this script to any tool that catches keypresses, such as [[xbindkeys]].
 
 
==== D-Bus ====
 
 
An alternative to the above is [[D-Bus]], which should be available by default as it is a dependency of [[systemd]]. With D-Bus we have a consistent and reliable way to communicate with other processes, such as Spotify.
 
 
To play or pause the current song in Spotify:
 
 
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
 
 
In order to bind this and the other commands to the media keys you need to install [[Xbindkeys]] and edit your .xbindkeysrc and add the following lines:
 
 
# Play/Pause
 
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
 
XF86AudioPlay
 
 
# Next
 
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next"
 
XF86AudioNext
 
 
# Previous
 
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous"
 
XF86AudioPrev
 
 
# Stop
 
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop"
 
XF86AudioStop
 
 
If the above commands do not work, try setting the dbus address:
 
 
USER=`whoami`
 
PROCESS=spotify
 
PID=`pgrep -o -u $USER $PROCESS`
 
ENVIRON=/proc/$PID/environ
 
if [ -e $ENVIRON ]
 
then
 
export `grep -z DBUS_SESSION_BUS_ADDRESS $ENVIRON`
 
else
 
echo "Unable to set DBUS_SESSION_BUS_ADDRESS."
 
exit 1
 
fi
 
 
===Windows ===
 
   
  +
.py ファイルで保存します。最後の行が実行部分ですので、コマンドを調整して音量を下げたり、ミュートを切り替えたりできます。
If you prefer the wine-version of Spotify, you can use {{AUR|spotifycmd}} to send actions to Spotify. [https://github.com/Tarrasch/dotfiles/compare/0149505f%5E...19ede1f6 Here] is a sample setup of xmonad bindings using spotifycmd.
 
 
== Tips & Tricks ==
 
   
 
=== トラック通知を無効化 ===
 
=== トラック通知を無効化 ===
   
  +
バージョン0.9.10以降、トラック変更通知はデフォルトで有効になりました。それらは非常に煩わしい場合があります。それらを無効にするには、以下を追加:
{{note|It is worth noting that if you have a {{AUR|SpotCommander}} [http://olejon.github.io/spotcommander/ Server] running alongside Spotify, and you disable track notifications by following the instructions below, the [https://play.google.com/store/apps/details?id&#61;net.olejon.spotcommander&hl&#61;en SpotCommander Client] running on your mobile device will display that “No Music is Playing” and will [http://askubuntu.com/questions/472325/remove-spotify-pop-up-notification-when-a-song-starts/472329#472329 fail to display track info] such as title, artist, album art, etc. Apart from that, the mobile client still works fine though, and is still able to skip, play, pause, control volume, etc.}}
 
 
バージョン 0.9.10 から、トラック変更の通知がデフォルトで有効になっています。この通知は非常に邪魔に思えるかもしれません。無効にするには、以下の行を {{ic|~/.config/spotify/Users/<spotifylogin>-user/prefs}} に追加してください:
 
   
  +
{{hc|~/.config/spotify/Users/''spotify login''-user/prefs|2=
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 を起動することでも可能です。
   
 
=== トラック通知を表示 ===
 
=== トラック通知を表示 ===
   
  +
{{Pkg|playerctl}} には {{pkg|python-gobject}} と [[dunst]] のような通知デーモンと一緒に使用するライブラリが付属しており、トラックが変更されたときにアーティストとタイトルを通知で表示することができます。
{{AUR|playerctl}} provides a library you can use with {{pkg|python-gobject}} and a notification daemon such as {{pkg|dunst}} to show the artist and title in a notification when the track changes.
 
   
 
#!/usr/bin/env python3
 
#!/usr/bin/env python3
161行目: 151行目:
 
=== 何度も再生されるラジオトラックをスキップ ===
 
=== 何度も再生されるラジオトラックをスキップ ===
   
{{AUR|playerctl}} ライブラリの他の使い道としてラジオで何度も再生されるトラックをスキップすることができます。ラジオ局で聞きたくない曲を低く評価する必要はもうありません。
+
{{Pkg|playerctl}} ライブラリの他の使い道としてラジオで何度も再生されるトラックをスキップすることができます。ラジオ局で聞きたくない曲を低く評価する必要はもうありません。
   
 
#!/usr/bin/env python3
 
#!/usr/bin/env python3
181行目: 171行目:
 
=== コマーシャルをミュート ===
 
=== コマーシャルをミュート ===
   
  +
{{Warning|コマーシャルのミュートは Spotify ではサポートされていないため、一時的に禁止される可能性があります [https://www.theverge.com/2018/3/5/17080920/spotify-cracking-down-piating-premium-free-account]}}
[https://github.com/mikar/blockify blockify] を使えばコマーシャルをミュートできます (Wine 版とネイティブの Linux クライアント両方で使えます)。[[AUR]] の {{AUR|blockify}} でインストールできます。
 
   
  +
==== spotblock ====
Spotify が起動するたびに blockify をバックグラウンドで実行されるようにするには:
 
   
  +
[https://github.com/mahkoh/spotblock spotblock] ({{AUR|spotblock-git}}) は systemd デーモンとして動作するリソース消費の少ない広告ブロッカーです。
{{bc|<nowiki>
 
#!/bin/sh
 
   
  +
==== Spotify-AdKiller ====
spotify=/usr/bin/spotify
 
   
  +
{{AUR|spotify-adkiller-git}} は、Spotify 広告をブロックするもう 1 つの代替手段です。
if [[ -x $spotify && -x /usr/bin/blockify ]];
 
  +
then
 
  +
==== spotblock-rs ====
blockify &
 
  +
block_pid=$!
 
  +
{{AUR|spotblock-rs}} は、Spotify の広告をミュートする高速かつ軽量のプログラムです。[[PipeWire]] でも機能します。
$spotify
 
  +
trap "kill -9 $block_pid" SIGINT SIGTERM EXIT
 
  +
==== Hosts ファイル ====
fi
 
  +
  +
hosts ファイルに以下の行を追加することでも Spotify の広告をブロックできます:
  +
  +
{{hc|/etc/hosts|<nowiki>
  +
# 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>}}
 
</nowiki>}}
   
  +
{{Note|''spclient.wg.spotify.com'' は、最近再生された曲だけでなく、ラジオや毎日のミックスもブロックしているようです}}
上のスクリプトを {{ic|/usr/local/bin/spotify}} に配置すれば、Spotify を起動したときに {{ic|/usr/bin/spotify}} が優先されます。他に変更する必要があるところはありません。アップデートしても消えることはありません。
 
   
 
=== リモートコントロール ===
 
=== リモートコントロール ===
205行目: 215行目:
 
==== SSH でコマンドを送信 ====
 
==== SSH でコマンドを送信 ====
   
  +
サーバー上に ssh がセットアップされている場合、以下のコマンドでクライアントからリモートの Spotify インスタンスに制御コマンドを送信できます:
If you set up ssh on the server, you can send controls from a client to a remote Spotify instance with
 
   
 
$ ssh user@host ''yourcommand''
 
$ ssh user@host ''yourcommand''
   
  +
''yourcommand'' は、サーバーにインストールした [https://code.google.com/p/spotifycmd/ spotifycmd] や上述の Linux 版の dbus スクリプトなどに置き換えてください。
where ''yourcommand'' can be {{AUR|spotifycmd}} that you installed on the server, or a dbus script for the linux version, as described above.
 
   
==== SSH で Spotify ウィンドウをつかむ ====
+
==== SSH で Spotify ウィンドウを取得する ====
   
  +
サーバーをリモートで制御するために TeamViewer や VNC などでデスクトップ全体を取得するのでなければ、サーバーからクライアントに Spotify ウィンドウのみを取得することもできます。
Aside from grabbing the whole desktop with TeamViewer or VNC to remotely control your server, you can also only grab the Spotify Window from the server to your client.
 
   
  +
サーバー側に sshd を設定して、サーバーとクライアントの両方に x11vnc をインストールしてください。クライアント側には tigervnc をインストールしてください。以下のスクリプトを使うことでデスクトップ全体を取得したり、Spotify ウィンドウだけを取得できます。MPD の GUI クライアントと同じように使うことができます。
To do that, you need to configure sshd on your server and install x11vnc on both server and client as well as tigervnc on the client. Then you can use these scripts to grab either the complete dektop or only the Spotify window, which essentially gets you GUI client-like behavior as with MPD.
 
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
245行目: 255行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
2番目のスクリプトをサーバーの {{ic|~/.bin/vncgetspotify.sh}} にコピーして、1番目のスクリプトをクライアントのどこかに保存してください。
You will need to copy the second script to ~/.bin/vncgetspotify.sh on the server and the first script to any place on your client.
 
   
  +
最後に、Spotify ウィンドウを取得するには、クライアント側で以下を実行:
Finally, to grab the spotify window, run on the client:
 
   
 
$ sh vncget.sh
 
$ sh vncget.sh
   
  +
デスクトップ全体を取得する場合:
or, for the whole desktop:
 
   
 
$ sh vncget.sh all
 
$ sh vncget.sh all
  +
  +
===HiDPI モード===
  +
最新の Spotify ビルドも DPI に対応していないため、ターミナルコマンドでインターフェイスをスケールする量を指定します:
  +
$ spotify --force-device-scale-factor=''X''
  +
  +
X はインターフェイスをスケールする量に置き換えて下さい。例: 2。
  +
  +
デスクトップファイルを使用する場合、パッケージを更新したときにファイルが上書きされないように、ローカルのアプリケーションフォルダにデスクトップファイルをコピーしてください:
  +
$ cp /usr/share/applications/spotify.desktop ~/.local/share/applications/
  +
  +
{{ic|~/.local/share/applications/spotify.desktop}} を編集して {{ic|--force-device-scale-factor}} オプションを追加:
  +
  +
{{hc|spotify.desktop|2=
  +
[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 モードで実行できます: {{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 モード]] を参照してください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
  +
=== デスクトップ環境のアラート (ビープ) によって Spotify がミュートになってしまう ===
=== DWM で Spotify Linux を使用した時に画像が点滅したり正しく表示されない ===
 
Start spotify as a floating window.
 
   
  +
PulseAudio の設定ファイルで "module-role-cork" をコメントアウトしてください。
You can add this rule to the rules array in your {{ic|config.h}}:
 
{ "Spotify", NULL, NULL, 2, True, -1 },
 
   
  +
テキストエディタで {{ic|/etc/pulse/default.pa}} を開いて以下の行をコメントアウトしてください:
This will tell dwm to start spotify as a floating window associated with the tag "2" no matter what window mode you are in. Recompile and install dwm to apply your new settings.
 
   
  +
load-module module-role-cork
=== ラジオが動作しない ===
 
   
  +
もしくは以下のコマンドを実行してアンロードしてください:
: Spotify [http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/Bug-Desktop-Linux-0-9-0-133-gd18ed589-Having-mixed-locale-breaks/td-p/418270 bug report] concerning mixed locales
 
If your radio page is broken (stuck when starting and unsresponsive to input) you might be using a custom locale. Try setting the environment variable {{ic|LC_NUMERIC}} to {{ic|en_US.utf8}} before starting Spotify.
 
   
  +
$ pactl unload-module module-role-cork
=== Spotify がローカルファイルを再生しない ===
 
   
  +
=== 検索を使うとインターフェイスが点滅してクラッシュする ===
This can manifest in a very unusual manner like some songs not playing when you try to stream them because the player attempts to play them from the hard drive.
 
   
  +
Spotify は古いバージョンの Chromium Embedded Framework を使っており検索を使おうとするとバグによってクラッシュします。以下のコマンドラインオプションを使うことで回避できます:
Try installing {{pkg|ffmpeg-compat}}, as per [https://bbs.archlinux.org/viewtopic.php?pid=1383240 this forum discussion].
 
   
  +
--force-device-scale-factor=1.0000001
=== SpotifyHelper.exe がクラッシュする (Windows クライアント) ===
 
   
  +
=== DWM で Spotify Linux を使用した時に画像が点滅したり正しく表示されない ===
If SpotifyHelper.exe crashes when starting Spotify, disable the d3d9 library with {{ic|winecfg}}. Go to the "Libraries" tab, choose "d3d9" and click Add. To disable it, click edit and select the "Disable" option.
 
  +
フローティングウィンドウで spotify を起動してください。
   
  +
以下のルールを {{ic|config.h}} の rules 配列に追加してください:
=== ランチャーアイコンがおかしい (Windows クライアント) ===
 
  +
{ "Spotify", NULL, NULL, 2, True, -1 },
   
  +
上記の設定でウィンドウモードと関係なく spotify タグが "2" のフローティングウィンドウとして起動されます。新しい設定を適用するために dwm を再コンパイル・インストールしてください。
If the Spotify icon does not show up correctly in your launcher, add the following line to {{ic|~/.local/share/applications/wine/Programs/Spotify.desktop}}:
 
   
  +
=== 検索やブラウザ、ラジオが動作しない ===
StartupWMClass=spotify.exe
 
   
  +
ブラウジングなどのタブで何も表示されなかったり、検索フィールドが機能しなかったりラジオページが表示されない場合 (起動したときにフリーズして入力に反応しなくなる)、ロケールの設定が原因かもしれません ([http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/Bug-Desktop-Linux-0-9-0-133-gd18ed589-Having-mixed-locale-breaks/td-p/418270 バグレポート] を参照)。
=== Pulseaudio ===
 
   
  +
Spotify を起動する前に {{ic|LC_NUMERIC}} 環境変数を {{ic|en_US.utf8}} に設定してみてください。
[[PulseAudio/トラブルシューティング]] や [https://bbs.archlinux.org/viewtopic.php?pid=1393465#p1393465] を見て下さい。
 
  +
  +
=== GUI スレッドのデッドロック ===
  +
  +
Awesome などのタイル型ウィンドウマネージャでは、新しい曲やプレイリストをダブルクリックしたときにデッドロックが発生することがあります。{{ic|~/.config/spotify/Users/[1-9]*-user/prefs}} ファイルを編集して以下の行を追加してください:
  +
  +
ui.track_notifications_enabled=false
  +
  +
そして Spotify を再起動します。
  +
  +
{{Note|
  +
* 問題の原因は複数存在し、上記の修正では特定のバージョンの Spotify クライアントと Awesome でしか問題が解決されません。Debian や Ubuntu ユーザーは Spotify 0.9.17.1.g9b85d436 と Awesome 3.4.15 で別の原因があると報告しています。
  +
* 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] を参照。
  +
}}
   
 
=== プロキシを使ったときにアルバム画像が表示されない、四角が表示される ===
 
=== プロキシを使ったときにアルバム画像が表示されない、四角が表示される ===
   
Quit spotify, then open spotify preferences {{ic|~/.config/spotify/prefs}}
+
spotify を終了して、spotify の設定 {{ic|~/.config/spotify/prefs}} を開いて下さい。
 
 
Change @https to @http:
+
@https @http に変更してください:
   
 
network.proxy.addr="your-proxy.com:80<strong>@http</strong>"
 
network.proxy.addr="your-proxy.com:80<strong>@http</strong>"
 
network.proxy.mode=2
 
network.proxy.mode=2
   
See original form post [http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/Mac-Windows-0-9-0-128-Apps-can-t-connect-anywhere-behind-proxy/m-p/448704#M52332 here].
+
[http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/Mac-Windows-0-9-0-128-Apps-can-t-connect-anywhere-behind-proxy/m-p/448704#M52332] を参照。
  +
  +
{{Note|1.0.17 現在、上記のように https を http に置き換えると全く接続できなくなることがあります。その場合、GUI では 'no proxy' に設定してから {{Pkg|proxychains-ng}} で全ての TCP 接続を強制的にプロキシを通すようにする方法があります。}}
   
 
=== Spotify でローカルネットワーク上の他のデバイスが検出されない ===
 
=== Spotify でローカルネットワーク上の他のデバイスが検出されない ===
   
  +
ファイアウォールを使っている場合、UDP と TCP のポート 57621 を開いて下さい。[[iptables]] の[[シンプルなステートフルファイアウォール]]を使用している場合、以下で設定できます:
If a firewall is in place, open ports 57621 for UDP and TCP. If you use a variant of the [[iptables]] [[Simple stateful firewall]], the following should do it:
 
   
 
iptables -A TCP -p tcp --dport 57621 -j ACCEPT -m comment --comment spotify
 
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
 
iptables -A UDP -p udp --dport 57621 -j ACCEPT -m comment --comment spotify
   
  +
ローカルネットワークの送信元と宛先を制限することもできます。
It is also possible to restrict the source and destination to the local network.
 
  +
  +
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
  +
  +
=== ダークテーマを使っている場合に検索バーのテキストが読めない ===
  +
  +
検索バーのテキストは白色に決められているため、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 を使っている場合、{{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}} を削除します。
   
 
==参照==
 
==参照==
*[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 クライアントのホームページ