v0.9.4から実装したカラーテーマについて
@パパリウス さまの方で公式なドキュメントが作成されるのが筋かもしれませんが、
先に私の方でドキュメント化させていただきます。
1.何が出来るのか
symphonic-mpdで使用しているWebインターフェースの外観のうち、各コンポーネントの配色を変更出来ます。
2.簡単な説明
lightテーマ(従来のものと同じ白地背景のもの)
外観上は従来のものとほぼ変わりありません。ただし、過去バージョンとは変更が加わっています(詳細は後述)。
darkテーマ(今回追加対応)
配色を暗めのタッチにしたものです。プラグインで変更できますが、今回のドキュメントではその仕組みとdarkテーマの改変(他のテーマ拡張)について解説します。
3.テーマの切り替え方法(とその解説)
画面右上のメニューから「COLOR THEME」を選択すると、ダイアログが表示されます。
中央の「Select Theme」から選択したいテーマを選択して下さい。
(よく考えたら、現在選択中のテーマも何らかの方法で表示したほうが良いですよね。
方法考えます。)
このときlightを選択した場合、以下のような動作が裏で動いています。
/home/pi/plugins配下のskin.cssという名前のシンボリックリンクファイルが消去される。
またdarkを選択した場合、以下の動作が裏で動いています。
/home/pi/plugins/32-color/dark.css へのシンボリックリンクが/home/pi/plugins/へskin.cssという名前で作成される。
つまり、「v0.9.4でのympdではskin.cssというファイルが存在する場合はこのファイルに記述されたスタイルシートを利用して各コンポーネントの配色が変更される」ということです。
4.dark.cssの中身について
以下の通りです。そのまま貼ってしまいます(文字コードはUTF-8で保存)。
/* symphonic-mpdスキン対応用CSSファイル
* このCSSファイルが存在する場合はCSSファイルに記載の値が反映されて
* 外観の色が変更されます。
* 値が未定義(もしくはCSSファイルが存在しない)場合は
* 規定の白のスキンの値が使用されて表示されます。
*/
:root {
--body-col: #c8c8c8; /*背景色*/
--body-bgcol: #272b30; /*文字色*/
--a-col: #2a6496; /*リンクの文字色*/
--a-focus-col: #428bca; /*リンクフォーカス時の文字色*/
--hr-border-col: #1c1e22; /*水平線の色*/
--blockquote-col: #7a8288; /*引用部の境界色*/
--form-control-col: #c8c8c8; /*フォームの文字色*/
--form-control-bgcol: #3a3f44; /*フォームの背景色*/
--panel-bgcol: #2e3338; /*パネルの背景色*/
--btn-col1: #484e55; /*ボタンの背景色1*/
--btn-col2: #3a3f44; /*ボタンの背景色2*/
--btn-bdcol: #555555; /*ボタンの境界線色*/
--btn-bg-repeat: no-repeat; /*ボタンの背景画像繰り返し*/
--btn-hover-col1: #999999; /*ボタンフォーカス時の背景色1*/
--btn-hover-col2: #555555; /*ボタンフォーカス時の背景色2*/
--btn-hover-bdcol: #ffffff; /*ボタンフォーカス時の境界線色*/
--modal-bgcol: #2e3338; /*モーダルダイアログの背景色*/
--dropdown-bgcol: #3a3f44; /*ドロップダウンメニューの背景色*/
--dropdown-hover-bgcol1:#999999; /*ドロップダウンメニューフォーカス時の背景色1*/
--dropdown-hover-bgcol2:#555555; /*ドロップダウンメニューフォーカス時の背景色2*/
--dropdown-hover-col:#ffffff; /*ドロップダウンメニューフォーカス時の文字色*/
--progress-col1: #272b30; /*プログレスバーの背景色1*/
--progress-col2: #111111; /*プログレスバーの背景色2*/
--close-col: #ddd; /*クローズボタンの色*/
--close-shadow-col: #272b30; /*クローズボタンの影色*/
--pre-col: #f5f5f5; /*preタグの文字色*/
--pre-bgcol: #ccc; /*preタグの背景色*/
--cvs-bgcol: #ccc; /*グラフ領域背景色*/
--table-hover-bgcol: #49515a; /*フォルダ・楽曲リストへのフォーカス時の背景色*/
--table-active-bgcol: #3e444c; /*フォルダ・楽曲リストへフォーカス+アクティブ時の背景色*/
--table-nth-child-odd-bgcol: #3a3f44; /*表のうちnth-childの偶数行背景色*/
--breadcrumb-bgcol: #272b30;/*フォルダ階層表示箇所の背景色*/
}
各パラメータの解説コメントがありますので、その気になれば現状のdarkテーマの配色を修正したり、新しいテーマを作ることが出来ると思います。
もう少し解説すると、:rootで囲まれた{}の中身で”--”で始まる各行がCSSのカスタムプロパティと呼ばれるもので、いわゆる変数として指定可能な設計になります。
CSSの書式としては各行の":"で挟まれる前半が定義名、後半が定義値となっており、必ず;で終わることとなっています。また/**/で挟まれた部分はコメントとなります。
定義値の色指定としては英単語もしくは#に続き16進数で3文字もしくは6文字で色を指定します(3文字の場合16階調で0〜f、6文字の場合256階調で00〜ff)。数字と色の関係は赤・緑・青の順になっています。
lightテーマではympdが元々使用しているCSSファイルの方にデフォルト値が指定されており、このカスタムプロパティが未定義の場合はデフォルト値が使用されることで以前の外観を維持しているわけです。
5.特定部のみ変更してみたい
プラグインでdarkテーマに変え、dark.cssの変更したいカスタムプロパティの値を変えるだけです。
その後、Webインターフェースをブラウザ上で再読込して下さい。
6.新しいテーマを作ってみたが「COLOR THEME」で追加で切り替えできるようにしたい
/home/pi/plugins/32-color内で以下の変更をして下さい。ステップは2つだけ。
念の為ファイルを変更する際はバックアップを取って下さい。
①新しいテーマ用のCSSを当該ディレクトリ内に保存する。
(例えばorange.cssにしたとします。名前はご自由に付けて構いませんが、拡張子はcssにします。)
②form.htmlを書き換える
<datalist id="skin-list">
<option value="light" />
<option value="dark" />
</datalist>
<div style="padding:20px 20px 5px 20px;">
<label class="control-label">Select Theme</label><br/>
<input type="text" class="run" list="skin-list" autocomplete="on" /><br/>
<p>After setting the theme, reload the browser.</p>
</div>
3行目の<option value="dark" />に続き<option value="orange" />を追加して下さい。
(orangeなのは前項でcssファイル名を仮にorange.cssにしたから。新たに作成したcssファイルと必ず一致させて下さい。)
後はこのプラグインをympdで実行すると設定変更が可能になります。
7.カスタムプロパティに指定しているコンテンツ以外にもここの配色は替えられないの?
残念ながら現状では不可能です(ympdの場合、カスタムプロパティのデフォルト値が入ったCSSファイルが実行ファイルにアーカイブ化されているため。)
ただし、元のソースコード側で修正を加えることで将来対応は出来ると思います。ご相談下さい。
8.何故今回InternetExplorer11が非サポートになったのか
IE11はカスタムプロパティ非サポートのため、ympdのサポート対象からは外しました。
Windows環境ではMicrosoftでもEdgeという最新ブラウザがあること、Firefox・Chrome・Vivaldiほか代替手段はありますのでご了承下さい。
9.v0.9.4でympdに対しての他の変更点
①カバーアートモードでカバーアートの上部に楽曲名が表示されるが、
楽曲文字列に背景色の薄い透過色で枠が付いていたのを取りやめ
(従来は白地のため不可視でした)
②キューモードのメニュー部分のゴミ箱アイコンに影があったが、
これを取りやめ
③キューモードのメニュー部分真ん中に薄灰色で「search」と表示されるようにした。
ここはテキストボックスになっており、現在キューモードで表示中のライブラリ検索結果に対して
「テキストボックスに入力した語句にヒットした結果を抽出」出来るよう設計がされています。
lightモードの場合、配色上テキストボックスがわからないことがあったため表示させました。
(検索文字列を利用者が入力すると「search」は非表示になります。)
最後に
私個人的には現状のdarkテーマもbestではなくbetterであると思っていますので、改良提案は大歓迎です。ぜひご提案をお待ちしております。