Rainmeterを使ってみようの巻 〜Skin〜

  • 2017年06月20日 修正追加
  • 2018年08月12日 4.2対応

SamurizeからRainmeterへのお試し移住を思い立ったはいいが当たり前だけどリファレンスが英語。これを毎度毎度読むのもしんどいので日本語のメモを作る事にした。現在のstableは3.3.2 Final ReleaseなのでこのVerを元に書いていく。一連のエントリを全て書き終わる頃には現在βの4.0がstableに昇格してるような気もするが細かい事は気にしない。予想通り4.0がstableに昇格したのでそれについても記述した。

4.0での重要な変更

サポートOSからXPとVistaが外れて7SP1以降となる。従ってXPおよびVistaユーザーは3.3.2を使う事。

サポートしてるscript言語

公式にサポートしてる言語はLuaのみとかなり残念。だがLoopで判定させて定期実行は出来るので実用上の問題はないが細かい制御がやりづらいのは確か。

フォルダ構成

Skinはiniファイルで記述しSkinsフォルダにおく。Skinsフォルダは通常インストールならユーザーフォルダ、ポータブルインストールならインストールフォルダにある。

Variants
1つのフォルダ下に複数のiniを置く事も可能でリファレンスではこれをVariantと表現している。しかしloadは常にその中の一つしか出来ない。使うとすれば同Skinの別Verを置いておきたいとかそういう場合かねえ。
Config
Root Config
ConfigはConfig Nameとも表現されている。
Skins\Foo\Bar\SkinName.ini
というPathだった場合、Config Nameは「Foo\Bar」となる。つまりSkins直下からCurrentまでの部分。そしてRoot ConfigはConfig NameのRootで「Foo」が相当する。
@Resources
画像や音声などのResourceファイルを置く為のフォルダ。これは扱いがちょっと特殊でRoot Config直下しか配置する事が出来ない。つまりRoot Config以下のSkinは全てこのフォルダを共有する訳だ。また@Resources\FontsにあるFontファイル、@Resources\CursorsにあるCursorファイルは自動的にloadされ、FontFaceやMouseActionCursorNameで使用する事が出来る。
@Vault 4.2で追加
plugin、特に3rd partyの物を格納する為のplugin管理用フォルダ。今のSkinインストーラーはpluginを自動的にここに保存するようになっているらしい。自作Skinを配布するんでなければ特に気にする必要はない。

Skin iniのフォーマット

iniは下記の6種類のSectionで構成される。

  • Rainmeter
  • Metadata
  • Variables
  • Measure
  • Meter
  • MeterStyle

iniの記述ルールも一応書いておこう

  • Section名はSkin内でユニークでなければならない。
  • Option名はSection内でユニークでなければならない。
  • Section名とOption名で使う事の出来る文字は数字とアルファベットのみ。
  • Optionの値が"で括られている場合Rainmeterは"を無視する。つまりどちらでも良いと言う事。
  • Optionの値は1行に納めなければならない。

SkinのUpdate

SkinはRainmeter SectionのUpdateで定義された間隔でUpdateされる。しかしMeterとMeasureはUpdateDividerでUpdate間隔を間引く事が可能で、Updateが1000でSectionのUpdateDividerが2ならばそのSectionは2000ミリ秒間隔で動作する。

Option Types

文字列

Text=Hello World
MyVar=Hello World

数字

FontSize=42
FontSize=(40 + 2)
FontSize=(2 > 1 ? 42 : 666)

Path

;SkinのCurrentフォルダからの相対Path
ImageName=lolcat.png
ImageName=..\lolcat.png
;絶対Path
ImageName=C:\lolcats\lolcat.png
;組み込み変数を使ってのPath
ImageName=#CURRENTPATH#lolcat.png
ImageName=#@#Images\lolcat.png

ここまでは特に何も解説する事はない。
色を表現するには2つの方法がある。

  • RRR,GGG,BBB,AAAはそれぞれの値を0-255で表す。
  • RRGGBBAAはそれぞれの値を00-FFで表す。

ただしどちらもアルファ値は省略可。

SolidColor=255,0,0,255
SolidColor=255,0,0
SolidColor=(200 + 55),(2 - 2),0
SolidColor=FF0000FF
SolidColor=FF0000

イベントアクションのコマンド。

;複数のコマンドを割り当てるときは[]で括る
LeftMouseUpAction=[!HideMeter SomeMeter][!HideMeter SomeOtherMeter]
;コマンドが1つの場合はどちらでも良い
LeftMouseUpAction=!HideMeter SomeMeter
LeftMouseUpAction=[!HideMeter SomeMeter]
;#ImageFile#がスペースを含む場合は"が必要なので無難に括った方が良い
LeftMouseUpAction=[!SetWallpaper "#ImageFile#"]

組み込みのコマンド以外にもWindowsコマンドラインでも良い。

;Notepad.exeでMyFile.txtを開く
LeftMouseUpAction=["C:\Windows\Notepad.exe" MyFile.txt]
;URLをブラウザで開く
LeftMouseUpAction=["https://forum.rainmeter.net"]

コマンドに与える引数に"が含まれている場合のエスケープ処理

LeftMouseUpAction=[!Log """Bob said "hello" to Susan"""]

引数に変数を指定する場合もエスケープが必要になる場合がある

LeftMouseUpAction=!SetOption SomeMeter FontSize #VarName#
LeftMouseUpAction=!SetOption SomeMeter FontSize [MeasureName]

とした場合、FontSizeに#VarName#もしくはMeasureNameの具体的な値が指定されてしまう。そうではなくてFontSize=#VarName#またはFontSize=[MeasureName]としたい場合は

LeftMouseUpAction=!SetOption SomeMeter FontSize #*VarName*#
LeftMouseUpAction=!SetOption SomeMeter FontSize [*MeasureName*]

のように*でエスケープすれば、#VarName#または[MeasureName]という文字列が指定される。

@Include

外部ファイルをIncludeする事が出来る。しかしファイルが分割されるのは一長一短なので使うかどうかは好みの問題。リファレンスでも使い所はVariables Sectionを共有したいときぐらいだろうと言っている。

オプション名 defalt値 概要
@Include
@Include2
@IncludeN
IncludeするファイルのPathを指定する。ファイルは拡張子にincをつけ@Resourcesフォルダに配置するのが望ましい。@IncludeNとあるがNの部分は文字列でもよい。@IncludeVariablesや@IncludeMetersも有効である。

どのSectionのどの部分で宣言しても良い。中身は宣言したSectionの直後に挿入される。