プラグイン機能とは

v0.3.10で実装されたsymphonic-mpdの『プラグイン機能』とは、自分で書いたシェルを起動するボタンをメニューに追加できる機能です。 例えば、DACのデジタルフィルタを切り替えるシェルを用意すれば、Web UIのメニューから実行することができます。

参考サイト

ジャイアンさんが丁寧な解説を描いてくださいました。ご一読くださいませ。

symphonic-mpdユーザーのためのLinux初心者講座 たぶん其の一
オーバークロックプリセットの話題です

symphonic-mpdユーザーのためのLinux初心者講座 そして其の二
オーバークロックプリセットの後編です

symphonic-mpdユーザーのためのLinux初心者講座 やっと其の三
UPDATE THIS FOLDERプラグイン導入の話題です

symphonic-mpd & SabreBerry32ユーザーのためのLinux中級講座
デジタルボリュームON/OFFプラグインの話題です

プラグインの設定

設定ファイルは/home/pi/plugins/.plugin.jsonです。

同梱しているサンプルプラグイン「ボリューム設定プラグイン(75%固定)」を例に説明しますと、 /home/pi/plugins/.plugin.jsonには以下のように定義されています。

{
"menu" :"VOLUME(75%)",
"active" :"yes",
"icon" :"volume-up",
"form" :"",
"command":"mpc volume 75",
"output" :"",
"success":"success!",
"error" :"error!"
} ,
項目 説明
menu メニューに表示するボタン名。
active yesで表示、noで非表示。
icon ボタン横のアイコンを指定。
form フォームのhtmlを指定。シェルにパラメータを渡す必要がなければフォームも不要ですので、設定は空にします。設定するパスは/var/lib/mpd/music/が起点となります。例えばフォームのhtmlが/var/lib/mpd/music/xx.htmlの場合、設定値は"/xx.html"となります。フォーム内のinputタグには必ずname="param"をつけてください。
command 実行するシェルのパス。(シェルではなくコマンドを直接指定しても問題ありません)
output 実行結果画面のhtmlを指定。不要なら空にします。設定するパスは/var/lib/mpd/music/が起点となります。例えばcommandで指定したシェルで/var/lib/mpd/music/RAM/output.htmlを出力する場合、設定値は"/RAM/output.html"となります。
success シェルの戻り値が0の場合に表示するメッセージ。outputが指定されている場合はそちらが優先され、successに指定したメッセージは使われません。
error シェルの戻り値が0より大きい場合に表示するメッセージ。

フォームの作り方

シェルにパラメータを引き渡したい場合、htmlで作成したフォームを呼び出すことができます。

例として『ブラウズ中のフォルダに絞ってLIBRARY UPDATEを実行する』というプラグインを取り上げます。

初めに、/home/pi/plugins/update_folder.htmlを作成します。

<form>
<input id="library_update_target" class="form-control" type="text" name="param" value="" />
<script>
$(function(){
$("#library_update_target").val(browsepath);
});
</script>
</form>

この例は<form>内に<input>一つと<script>一つを持つシンプルなフォームです。<input>はアップデート対象のパスを設定するテキスト入力欄です。<script>はフォーム表示時にテキスト入力欄にブラウズ中のパスを自動設定するJavascriptです。(※設定しているbrowsepathという変数はWeb UI内部で定義されているものです)

<input>にはname="param"という属性を忘れずつけてください。 シェルに渡せるパラメータは1つだけです。複数の値を渡したい場合は適当なデリミタで連結して渡し、受け取ったシェルの中でcutコマンドなどを使ってパラメータを分解して使ってください。

作成が終わったら、/var/lib/mpd/music/以下にシンボリックリンクを貼り、ブラウザから参照できるようにします。

cd /var/lib/mpd/music/
sudo ln -s /home/pi/plugins/update_folder.html

※シンボリックリンクを貼らずに、/var/lib/mpd/music/以下に直接htmlを配置しても問題ありません。

最後に、/home/pi/plugins/.plugin.jsonにプラグイン定義を追加します。

{
"menu" :"UPDATE THIS FOLDER",
"active" :"yes",
"icon" :"heart",
"form" :"/update_folder.html",
"command":"mpc update",
"output" :"",
"success":"Library updating",
"error" :"error!"
} 

※直前のプラグイン定義とカンマ(,)で区切るのを忘れないでください。

アイコン

プラグイン定義の"icon"に指定するアイコン名です。

1 2 3 4 5
plus asterisk euro minus cloud
envelope pencil glass music search
heart star star-empty user film
th-large th th-list ok remove
zoom-in zoom-out off signal cog
trash home file time road
download-alt download upload inbox play-circle
repeat refresh list-alt lock flag
headphones volume-off volume-down volume-up qrcode
barcode tag tags book bookmark
print camera font bold italic
text-height text-width align-left align-center align-right
align-justify list indent-left indent-right facetime-video
picture map-marker adjust tint edit
share check move step-backward fast-backward
backward play pause stop forward
fast-forward step-forward eject chevron-left chevron-right
plus-sign minus-sign remove-sign ok-sign question-sign
info-sign screenshot remove-circle ok-circle ban-circle
arrow-left arrow-right arrow-up arrow-down share-alt
resize-full resize-small exclamation-sign gift leaf
fire eye-open eye-close warning-sign plane
calendar random comment magnet chevron-up
chevron-down retweet shopping-cart folder-close folder-open
resize-vertical resize-horizontal hdd bullhorn bell
certificate thumbs-up thumbs-down hand-right hand-left
hand-up hand-down circle-arrow-right circle-arrow-left circle-arrow-up
circle-arrow-down globe wrench tasks filter
briefcase fullscreen dashboard paperclip heart-empty
link phone pushpin usd gbp
sort sort-by-alphabet sort-by-alphabet-alt sort-by-order sort-by-order-alt
sort-by-attributes sort-by-attributes-alt unchecked expand collapse-down
collapse-up flash log-out new-window
record save open saved import
export send floppy-disk floppy-saved floppy-remove
floppy-save floppy-open credit-card transfer cutlery
header compressed earphone phone-alt tower
stats sd-video hd-video subtitles sound-stereo
sound-dolby sound-5-1 sound-6-1 sound-7-1 copyright-mark
registration-mark cloud-download cloud-upload tree-conifer tree-deciduous
cd

未実装アイコン

v0.3.12時点では使用できませんが、将来的に実装する可能性のあるアイコンです。

1 2 3 4 5
save-file open-file level-up copy
paste alert equalizer king queen
pawn bishop knight baby-formula tent
blackboard bed apple erase hourglass
lamp duplicate piggy-bank scissors bitcoin
btc xbt yen jpy ruble
rub scale ice-lolly ice-lolly-tasted education
option-horizontal option-vertical menu-hamburger modal-window oil
grain sunglasses text-size text-color text-background
object-align-top object-align-bottom object-align-horizontal object-align-left object-align-vertical
object-align-right triangle-right triangle-left triangle-bottom triangle-top
console superscript subscript menu-left menu-right
menu-down menu-up