雨滴社区RM高级教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RM高级教程
写在开篇之前:
Rainmeter(以下简称RM)作为一个基于代码而非图形化界面的开放式桌面美化软件,绝大部分内容都是来自于默默奉献的非盈利制作者(据我所知只有Gnometer、Enigma、ABP是RM 官方开发者制作的套装)。

一个高素质的RM皮肤制作者群体不仅为推广使用RM提供丰富的内容,反过来也能促进RM在新版本中优化设计、开发更强的功能,可以说是RM的中坚力量
[XANCI的RM高级教程]系列教程面向RM皮肤制作者,以及希望深入了解RM并成为皮肤制作者的广大RM使用者。

由于本教程不会提供关于"RM如何使用"之类问题的解答,建议新手还是先看看本版的其他入门教程
本教程基于最新版本的Rainmeter 2.1.0 r959英文版,并会随新版本的推出同步更新
中文版虽然汉化了程序界面,但是皮肤代码的编辑仍然是英文(RM在可预见的将来不会将代码部分进行本地化),习惯使用英文指代许多RM名词、术语将为理解使用和编辑RM皮肤带来方便,本系列教程在每个英文术语第一次出现时附加翻译,后面则不再翻译
另外要提到的一个重要的参考是官方的Manual(使用手册,或称帮助文档)
此手册目前汉化工作还在进行中,最新英文版本地址如下
/cms/Manual_beta
当RM使用中遇到任何问题时,希望有条件的同学第一时间先参考Manual中相关条目,因为Manual由RM开发团队编写,其权威性、全面性超过任何网上的教程(本人为了实现一个功能,曾经动用了ColorMatrix,后来发现还有一个ImageTint参数可以使用= =)
绪论
一、RM简介
当安装完RM后启动,第一次安装的话应该不会加载任何皮肤,右键点击任务栏右侧雨滴状的托盘图标,在弹出菜单中点击About(关于),点击最后一个标签页Version(版本)
最上面显示的是你当前的RM版本,以RM 2.1英文版为例
Rainmeter 2.1.0 r959 64-bit (Sep 18 2011)
2.1.0是RM的主版本号,r959是小版本号,2.1.0 r959表示这是2.1.0的正式发布版,在2.0.0发布版之后、2.1.0发布版之前的一系列测试版的版本号则会显示为诸如2.1.0 beta rXXX,代表2.1.0的测试版,XXX编号会小于正式版的959,RM团队会在每个测试版中修正bug,增加新的功能。

RM正式版本间的开发期通常比较长,其中新出的皮肤可能部分用到beta版本的功能,建议随时关注官网下载最新的版本
64-bit表示你安装的是适用64位系统的版本,对64位系统的支持较好,有些Plugin(插件)会区分32和64位版本
Sep 18 2011表示当前版本发布的日期,2.1中文版显示的是Sep 20 2011,新版本的翻译
工作也是需要时间的,向翻译组的无私奉献致敬!
二、RM路径
还是Version标签页,下面有三个路径,每人的电脑上区别于系统设置、安装时的选择等等1.Path(主路径):通常位于Program Files\Rainmeter\,是RM主程序的安装路径,其下有两个重要文件夹:Addons(附加组件)和Plugins(插件)
2.IniFile(配置文件):通常位于AppData\Roaming\Rainmeter\,其下Rainmeter.ini是当前桌面的配置[注1];Rainmeter.stats是独立的网络流量统计;Themes文件夹下是主题,注意放在RM安装目录下的Themes文件夹中的主题是不会生效的,必须移至这里
3.SkinPath(皮肤):通常位于Documents\Rainmeter\Skins\,存放RM的Skin,同样放在RM 安装目录下的Skins文件夹中的皮肤是不会生效的,必须移至这里
有关RM中如何引用各种路径的方法会在后面的教程中介绍
三、RM工作结构
当RM启动时,会先加载Rainmeter.ini,然后启动Rainmeter.ini中记录的皮肤配置文件,这些都加载到电脑内存当中,任何对于Rainmeter调用的文件的修改都需要Refresh(刷新,对应单独的皮肤.ini文件)或者Refresh All(全部刷新,同时会更新目录)
.ini皮肤文件除去文件头外,主体分为两部分:Measure(度量)和Meter(仪表),前者用于获取数据,后者决定内容的显示方式
四、RM编辑、调试工具
对于RM使用的.ini和.inc等文件,用系统自带的记事本就可以修改,另外RM还提供了2个工具
1.RainManager
直接左键点击任务栏RM的托盘图标,或者在RM右键菜单[注2]中点击最上面的Manage(管理)就可打开
Skins标签页用于管理加载、设置皮肤在桌面的显示方式和行为,不再累述;Themes标签页用于管理主题,但过去的RM主题管理器曾经有各种各样的问题和BUG,建议在有关主题的操作中从资源管理器和记事本进行创建、修改主题文件;第三个Settings标签页不常用2.About
RM右键菜单中Manage下面,也就本篇开头查看版本的地方
Log(日志)标签页用于记录RM的运行状态,皮肤工作不正常时这里也会显示报错信息;Measures标签页用于显示当前加载的各个皮肤中的Measure值;Plugins标签页用于显示当前加载的插件,不重要;最后一个就是Version标签页
五、其他RM编辑系统
所谓RM代码,指RM自身调用的.ini和.inc文件,也是大部分编辑工作的对象,但是只会写RM代码还是不够的,下面内容虽然不在本教程涉及范围内,还是希望大家尽量学习、掌握
1.图像处理软件
常用的PhotoShop足已,用以绘制皮肤调用的图像,通常使用带Alpha(透明)通道的.png格式
2.Regular Expression(正则表达式)
RM使用的一种查找和替换文本的表示法,最常见于调用WebParser.dll插件的Measure(RegExp=),如天气、RSS浏览器等,大部分此类皮肤的编辑只需参考同类皮肤;其次是一些Measure中复杂的Substitute(替换),不常见
3.Lua Script(Lua脚本)
我们不得不承认RM自身的代码虽然还在不断完善中,但功能是非常有限的,所以有些高级功能的实现需要调用Lua脚本,后面有关Measure的教程会简单提到如何调用Lua脚本
注1:AppData\Roaming\Rainmeter\下的Rainmeter.ini与任意主题文件夹下的Rainmeter.thm都称之为RM配置文件,记录使用的皮肤和皮肤显示行为,加载任一Rainmeter.thm都会覆盖当前的Rainmeter.ini
注2:右键点击RM任务栏托盘图标出现的菜单称之为RM右键菜单,右键点击任意皮肤出现的菜单中下方的Rainmeter里才是RM右键菜单
预告
按计划的教程顺序之后将讲解RM的路径系统、!Bang(指令)系统,再回头讲解RM的主体(配置文件、皮肤文件、Measure和Meter),最后讲解RM高级功能的核心:变量系统
至于为何将路径和指令系统放在皮肤文件之前讲解,本人一直认为RM中UI的设计、Meter,甚至是Measure都不是RM的核心,是可以轻易复制和仿制的,一个套装只要重新绘制UI,简单修改下主题、皮肤中Meter的参数,就可以完全变成另一个样子,核心却没有变化。

而路径和指令系统不光是变量系统的基础,也是整个RM代码中常用的、不可或缺的一部分,所以放在实际的Measure和Meter之前
当然大家也可以先跳过路径和指令系统,直接阅读RM主体部分,这样能快速开始皮肤的编辑工作
路径
一、RM三大路径位置
RM三大路径分别是RM主程序安装位置、主题配置文件位置、皮肤配置文件位置,在第一讲绪论中已经简单介绍过
二、RM路径
还是Version标签页,下面有三个路径,每人的电脑上区别于系统设置、安装时的选择等等1.Path(路径):通常位于Program Files\Rainmeter\,是RM主程序的安装路径,其下有两个重要文件夹:Addons(附加组件)和Plugins(插件)
2.Settings(设置):通常位于AppData\Roaming\Rainmeter\,其下Rainmeter.ini是当前桌面的配置;Rainmeter.stats是独立的网络流量统计;Themes文件夹下是主题,注意放在RM 安装目录下的Themes文件夹中的主题是不会生效的,必须移至这里
3.Skins(皮肤):通常位于Documents\Rainmeter\Skins\,存放RM的Skin,同样放在RM安装目录下的Skins文件夹中的皮肤是不会生效的,必须移至这里
以本人的电脑为例,贴上About-Version中的内容,本篇之后的所有例子都是基于这三个路径
Rainmeter 2.1.0 r959 64-bit (Sep 18 2011)
Path: D:\Program Files\Rainmeter\
Settings: D:\AppData\Roaming\Rainmeter\
Skins: D:\Documents\Rainmeter\Skins\
同时之后的例子中不包括前后引号",以及注意路径前后是否有"\",正确的路径以蓝色字体标出
二、Skins文件夹
Skins是存放RM使用皮肤的文件夹,注意.ini文件直接放在Skins下是不会被RM识别的,至少要放入一级子文件夹中
Skins下的任意文件夹内的.ini文件同一时间内只能有一个处于活动状态(直接位于该文件夹内的.ini文件,不包括其子文件夹中的.ini文件)
任何包含有效.ini文件的文件夹都可称为一个Config,Config是许多!Bang指令需要的参数之一,一个能正确使用的Config名称不包括"Skins\"及之前的路径、之后的"\"和.ini文件名例:有如下文件
Skins\Folder1\Skin1.ini
Skins\Folder1\Folder2\Skin2.ini
对于Skin1.ini,其正确的Config为"Folder1"
对于Skin2.ini,其正确的Config为"Folder1\Folder2"
三、路径的引用
RM中除了直接使用完整的路径名外,还有许多路径变量,属于RM的Built-in Variables(内置变量),下面一一介绍
1.固定的路径,在RM安装完成后就是固定的,因人而异
#PROGRAMDRIVE#
RM安装盘符,例:"D:"
#PROGRAMPATH#
RM安装路径,例:"D:\Program Files\Rainmeter\"
#SETTINGSPATH#
RM配置文件的路径,例:"D:\AppData\Roaming\Rainmeter\"
#SKINSPATH#
RM皮肤文件的路径,例:"D:\Documents\Rainmeter\Skins\"
#PLUGINSPATH#
RM插件的路径,例:"D:\Program Files\Rainmeter\Plugins\"
#ADDONSPATH#
RM附加组件的路径,例:"D:\Program Files\Rainmeter\Addons\"
2.变化的路径,根据调用位置不同而异
为举例,还是设Skins有以下两个文件
Skins\Folder1\Skin1.ini
Skins\Folder1\Folder2\Skin2.ini
#CURRENTPATH#
当前.ini文件的路径
对于Skin1.ini:"D:\Documents\Rainmeter\Skins\Folder1\"
对于Skin2.ini:"D:\Documents\Rainmeter\Skins\Folder1\Folder2\"
#CURRENTFILE#
当前.ini文件的名称
对于Skin1.ini:"Skin1.ini"
对于Skin2.ini:"Skin2.ini"
#CURRENTCONFIG#
当前.ini文件的Config
对于Skin1.ini:"Folder1"
对于Skin2.ini:"Folder1\Folder2"
#ROOTCONFIGPATH#
当前.ini文件到Skins下一级子文件夹的完整路径
对于Skin1.ini:"D:\Documents\Rainmeter\Skins\Folder1\"
对于Skin2.ini:"D:\Documents\Rainmeter\Skins\Folder1\"
路径变量在引用时可以组合使用,例:
#CURRENTPATH##CURRENTFILE#
对于Skin1.ini:"D:\Documents\Rainmeter\Skins\Folder1\Skin1.ini"
对于Skin2.ini:"D:\Documents\Rainmeter\Skins\Folder1\Folder2\Skin2.ini"
对于不同的!Bang指令,有些需要的参数是Config,有些需要的参数是.ini文件的完整路径,使用时注意正确引用
!Bang指令
一、介绍
!Bang指令(以下简称!Bang)是RM用来调控RM内部参数、执行外部命令的指令,跟随在触发器之后
在RM 2.1以前的版本中,完整的写法例如刷新当前皮肤:
!RainmeterRefresh
从2.1版本起,指令开头的"Rainmeter"可以省略,这个!Bang改为
!Refresh
当然老版本皮肤中带有Rainmeter的!Bang同样也能被识别
本讲内容主要带大家大致了解RM中有哪些!Bang触发器,以及!Bang有哪些功能,特定!Bang的使用方法在后面对应章节会有详细说明
二、触发器
1.[Rainmeter]特有触发器
皮肤.ini文件头[Rainmeter]区内特有的触发器只有一个
OnRefreshAction=
这个触发器会在皮肤第一次加载、以及每次刷新时触发
[Rainmeter]下还可以使用MouseActions(鼠标动作),见下文
2.[Measure]特有触发器
Measure下的触发器又称为IfActions,有三个
IfAboveAction=
当Measure值大于时触发
IfBelowAction=
当Measure值小于时触发
IfEqualAction=
当Measure值等于时触发
以及对应使用的判断值
IfAboveValue=
IfBelowValue=
IfEqualValue=
IfActions使用时有三点需要特别注意
1)IfAction和IfValue的前后顺序没有规定
IfAboveAction=
IfAboveValue=

IfAboveValue=
IfAboveAction=
都是正确的写法
2)对于IfAboveAction,当Measure值大于判断值触发后,只有Measure值变化到小于判断值并再次大于判断值时才会再次触发;对于IfBelowAction,当Measure值小于判断值触发后,只有Measure值变化到大于判断值并再次小于判断值时才会再次触发;对于IfEqualAction,当Measure值等于判断值触发后,只有Measure值变化到大于或小于判断值并再次等于判断值时才会再次触发
3)同一Measure下,可以同时出现IfAboveAction、IfBelowAction、IfEqualAction,但每个触发器只能出现一次,即使使用不同判断值的同一触发器也不能正确被识别
3.[Meter]特有触发器
各类Meter中只有Button(按钮)Meter自带一个触发器
ButtonCommand=
当按下Button时触发
同时各类Meter下也可使用MouseActions
4.MouseActions
MouseActions是一系列识别鼠标动作的触发器,可位于.ini皮肤文件头[Rainmeter]下,对整个皮肤生效,也可位于单独[Meter]下,只对该Meter生效
LeftMouseDownAction=
左键按下时触发,使用这个触发器同时会使皮肤的拖动失效RightMouseDownAction=
右键按下时触发,使用这个触发器同时会使皮肤的右键菜单失效MiddleMouseDownAction=
中键按下时触发
LeftMouseUpAction=
左键松开时触发
RightMouseUpAction=
右键松开时触发,使用这个触发器同时会使皮肤的右键菜单失效MiddleMouseUpAction=
中键松开时触发
LeftMouseDoubleClickAction=
左键双击时触发
RightMouseDoubleClickAction=
右键双击时触发,使用这个触发器同时会使皮肤的右键菜单失效MiddleMouseDoubleClickAction=
中键双击时触发
MouseOverAction=
鼠标移至上方时触发
MouseLeaveAction=
鼠标离开上方时触发
MouseActionCursor
伴随MouseActions使用的一个参数,默认为1,即鼠标移至有MouseAction区域上方时将变为点击样式,0则为不发生变化
当MouseActionCursor=0在文件头[Rainmeter]下使用时对整个皮肤生效,但在特定[Meter]下加上MouseActionCursor=1可覆盖全局设定
当你在包括有MouseActions或ButtonCommand的Meter或Button上方有另外一个Meter 时,位于上方的Meter必须设置MouseActionCursor=0才可使下方的触发器生效,即使上方的Meter没有设置MouseActions
MouseActions使用时还需注意
1)如果皮肤被设置为Click through,整个皮肤上的任何MouseActions都不会触发
2)Left/Right/MiddleMouseDoubleClickAction后面如果没有!Bang,会转而执行对应的Left/Right/MiddleMouseDownAction(如果有的话)
三、!Bangs
以下说明格式为
!Bang [必须参数] (可选参数)
1.!Execute
!Execute是RM中使用最多、功能最强的!Bang,主要有两种使用方法
1)当有多个!Bang需要同时执行时使用,子!Bang用"["、"]"分隔
!Execute [!Bang1][!Bang2][!Bang3]
2)执行外部程序,可以包括执行参数,注意被执行的路径前后必须有引号"
!Execute ["C:\Windows\Notepad.exe"]
打开记事本
!Execute ["C:\Windows\Notepad.exe" "#CURRENTPATH##CURRENTFILE#"]
使用记事本打开当前.ini
2.RM程序相关!Bangs
!About (TabName)
打开RM右键菜单中的About窗口
!Manage (TabName)
打开RM右键菜单中的Manage窗口,即RainmeterManager
!LsBoxHook [Config]
调用LiteStep lsBox,不常见
!ResetStats
将#SETTINGSPATH#Rainmeter.stats中的数据(网络流量统计)清零
!RefreshApp
相当于RM右键菜单中的Refrash all
!Quit
退出RM
3.变量操作类!Bangs
!SetOption [Meter/Measure] [Option] [Value] (Config)改变Meter或Measure下的参数
!SetOptionGroup [Group] [Option] [Value] (Config)
改变Meter/Measure Group下的参数
!WriteKeyValue [Section] [Key] [Value] (FileSpec)
将RM使用的.ini或.inc文件内容永久性改写
!SetVariable [Variable] [Value] (Config)
改变变量的值
!SetVariableGroup [Variable] [Value] [Group]
改变Config Group内变量的值
4.Skin操作类!Bangs
!Show (Config)
显示
!Hide (Config)
隐藏
!Toggle (Config)
切换显示或隐藏
!ShowGroup [Group]
显示Config Group
!HideGroup [Group]
隐藏Config Group
!ToggleGroup [Group]
切换显示或隐藏Config Group
!Move [X] [Y] (Config)
移动
!ActivateConfig [Config] [Ini-file]
加载
!DeactivateConfig (Config)
卸载
!DeactivateConfigGroup [Group]
卸载Config Group
!ToggleConfig [Config] [Ini-file]
切换加载或卸载
!Refresh (Config)
刷新
!RefreshGroup [Group]
刷新Config Group
!Update (Config)
更新
!UpdateGroup [Group]
更新Config Group
!Redraw (Config)
重新绘制
!RedrawGroup [Group]
重新绘制Config Group
!SetTransparency [AlphaAmount] (Config)
设置透明度
!SetTransparencyGroup [AlphaAmount] [Group]
设置Config Group透明度
!ShowFade (Config), !HideFade (Config), !ToggleFade (Config)
显示、隐藏、切换显示或隐藏时使用渐变效果
!ShowFadeGroup (Config), !HideFadeGroup (Config), !ToggleFadeGroup (Config)
显示、隐藏、切换显示或隐藏Config Group时使用渐变效果
!ShowBlur (Config)
显示Aero效果
!HideBlur (Config)
隐藏Aero效果
!ToggleBlur (Config)
切换显示或隐藏Aero效果
!AddBlur [Region] (Config)
添加Aero效果区
!RemoveBlur [Region] (Config)
移除Aero效果区
!Draggable [NewSetting] (Config)
设置允许拖动
!DraggableGroup [NewSetting] [Group]
设置Config Group允许拖动
!ZPos [POS] (Config)
设置垂直位置
!ZPosGroup [POS] [Group]
设置Config Group垂直位置
!KeepOnScreen [NewSetting] (Config)
设置钉在桌面
!KeepOnScreenGroup [NewSetting] [Group]
设置Config Group钉在桌面
!ClickThrough [NewSetting] (Config)
设置点击穿透
!ClickThroughGroup [NewSetting] [Group]
设置Config Group点击穿透
!SnapEdges [NewSetting] (Config)
设置边缘吸附
!SnapEdgesGroup [NewSetting] [Group]
设置Config Group边缘吸附
5.Measure操作类!Bangs
!EnableMeasure [Measure] (Config)
启用
!EnableMeasureGroup [Group] (Config)
启用Measure Group
!DisableMeasure [Measure] (Config)
禁用
!DisableMeasureGroup [Group] (Config)
禁用Measure Group
!ToggleMeasure [Measure] (Config)
切换启用或禁用
!ToggleMeasureGroup [Group] (Config)
切换Measure Group启用或禁用
!UpdateMeasure [Measure] (Config)
更新
!UpdateMeasureGroup [Group] (Config)
更新Measure Group
!CommandMeasure [Measure] [Arguments] (Config)
Measure命令,参数视Measure类别不同而异
6.Meter操作类!Bangs
!ShowMeter [Meter] (Config)
显示
!HideMeter [Meter] (Config)
隐藏
!ToggleMeter[Meter] (Config)
切换显示或隐藏
!UpdateMeter [Meter] (Config)
更新
!MoveMeter [X] [Y] [Meter] (Config)
移动
!ShowMeterGroup [Group] (Config)
显示Meter Group
!HideMeterGroup [Group] (Config)
隐藏Meter Group
!ToggleMeterGroup [Group] (Config)
切换显示或隐藏Meter Group
!UpdateMeterGroup [Group] (Config)
更新Meter Group
四、!Bang使用注意
1.当使用OnRefreshAction或IfActions时,慎用刷新类!Bangs,可能造成RM循环刷新进而卡死
2.!Bangs使用时建议所有参数用引号"括起,因为路径类、公式类参数引用后中间有可能包含空格,导致参数识别错误
3.当参数内一部分时包含引号"、未配对的括号"("等可能导致识别歧义的符号时,参数两头使用三重引号"""才能使参数正确识别
Rainmeter.ini/Rainme ter.thm
一、介绍
Rainmeter.ini位于#SETTINGSPATH#,Rainmeter.thm位于#SETTINGSPATH#下各主题文件夹
两者的主要功能均为记录RM以何种方式加载哪些皮肤,区别是前者记录当前或最后一次关闭RM时的状态,后者记录设置好的主题
RM2.1版本以前的网络流量统计也是记录在Rainmeter.ini/.thm中,从2.1版本开始与主题分离,单独记录在#SETTINGSPATH#下的Rainmeter.stats中
如无需要,Rainmeter.ini/.thm中大部分参数不用手动写上,保持默认即可。

部分参数若.thm 中没有提到,在RM加载主题时会自动写入.ini中
二、文件头[Rainmeter]的参数
TrayIcon
设为0则不会显示托盘图标
TrayExecuteL, TrayExecuteM, TrayExecuteR, TrayExecuteDL, TrayExecuteDM, TrayExecuteDR
分别为鼠标左/中/右键单/双击托盘图标的触发器,设置TrayExecuteR会覆盖默认的RM右键菜单,按住Ctrl再点击则会执行默认行为
ConfigEditor
当在RM右键菜单中点击Edit Skin(编辑皮肤)时使用的编辑器,默认为记事本
SkinPath
Skins文件夹的路径,留白则会自动使用#SKINSPATH#
Logging
设为1的话,About对话框Log标签页中的内容都会记录在#SETTINGSPATH#Rainmeter.log 中
Debug
设为1的话Logging记录会更详细,适用当前皮肤的运行会拖慢RM运行甚至卡住等恶性情
DisableVersionCheck
设为1的话RM将不会检查更新,只有下一个版本号的正式发布版才会提醒更新,beta版将不会提醒
三、托盘图标行为[TrayMeasure]的参数
Measure
使用的Measure
TrayMeter
Meter类型只能为HISTOGRAM或BITMAP
TrayColor1
当Meter类型为HISTOGRAM时的背景色
TrayColor2
当Meter类型为HISTOGRAM时的前景色
TrayBitmap
当Meter类型为HISTOGRAM时使用的图像,每帧尺寸必须为16x16,路径从Skins\后算起。

图像格式可以为ico, bmp, gif, png,但只有.ico能正确显示Alpha通道
四、各皮肤配置[ConfigName]的参数
WindowX,WindowY
皮肤的X,Y坐标,左上方为原点,可使用百分号%,表示占整个屏幕的百分比位置AnchorX, AnchorY
皮肤锚点的X,Y坐标,皮肤左上方为原点,皮肤的X,Y坐标为原点到皮肤锚点的距离SavePosition
设置为1则RM会记录皮肤的位置并在下一次启动时载入
AlwaysOnTop
皮肤的垂直位置,取值-2对应"On desktop",即位于桌面;-1对应"Bottom",即位于其他窗口之下;0对应"Normal",即行为与其他窗口相同;1对应"T opmost",即位于其他窗口之上;2对应"Stay topmost",即始终位于其他窗口之上
Draggable
设置为1则皮肤可拖动
SnapEdges
设置为1则皮肤拖动时会吸附屏幕边缘或其他皮肤边缘,拖动时按住Shift/Ctrl/Alt不会吸附HideOnMouseOver
设置为1则当鼠标置于皮肤之上时皮肤会隐藏,移开鼠标会重新显示,鼠标移动时按住Shift/Ctrl/Alt皮肤不会隐藏/显示
StartHidden
设置为1则皮肤载入后保持隐藏
NativeTransparency
设置为1来启动本地透明度支持,只当系统为XP时可使用
AlphaValue
设置皮肤透明度(0-255),XP系统需要开启NativeTransparency
FadeDuration
皮肤的渐变时间,单位为毫秒
ClickThrough
设置为1则皮肤不会响应鼠标动作,XP系统需要开启NativeTransparency,按住Shift/Ctrl/Alt 皮肤会正常响应
KeepOnScreen
设置为1则皮肤始终会显示在桌面区域内
LoadOrder
皮肤的加载顺序,默认为0,数字大的会显示在上层,同层的按字母表顺序加载,LoadOrder 并不影响AlwaysOnTop的设置,AlwaysOnTop设置相同皮肤的显示的才会受LoadOrder影响,另外AlwaysOnTop只影响皮肤的显示,涉及到某些变量时还需考虑LoadOrder Group
Config Group,多个Group名用"|"分隔,同样可以写在皮肤.ini内
皮肤.ini文件的结构
系列教程到了第五讲终于开始讲实际的皮肤文件了= =
RM的各种.ini/.inc/.thm文件都是由一个个[Section]构成的,即用方括号"[","]"括起的Section名,上一讲的配置文件.ini/.thm中的Section使用都十分简单,但是Section在皮肤文件结构中是十分重要的一个概念
一、名称固定的Section
1.皮肤文件头[Rainmeter]
1)背景参数
Background
背景图像,如果下面BackgroundMode选择了0而本参数空缺的话,将使用桌面背景BackgroundMode
0对应使用单一图像;1对应透明(默认);2对应使用颜色;3对应拉伸的图像;4对应平铺的图像
ImageCrop
裁剪图像,格式为ImageCrop=X, Y, W, H, Origin
XY是裁剪的起始坐标,WH是裁剪区域的宽和高,Origin为可选参数:1,2,3,4,5分别对应原点在左上、右上、右下、左下、中央
Greyscale
设置为1则图像将显示为黑白
ImageTint
图像染色
ImageFlip
图像翻转,有效参数:NONE(不翻转);HORIZONTAL(水平);VERTICAL(垂直);BOTH(旋转180度)
ImageRotate
图像旋转,顺时针,单位度
图像变化应用的顺序为ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate
BackgroundMargins
当BackgroundMode=3(即拉伸图像)时使用,格式为BackgroundMargins=L,T,R,B,分别表示左、上、右、下不拉伸而保持原比例的区域宽度
SolidColor
BackgroundMode=2时的主颜色
SolidColor2
BackgroundMode=2时的副颜色,使用此参数会制造一个渐变效果,默认主颜色在左副颜色在右
GradientAngle
修改渐变效果的角度,顺时针,单位度
BevelType
BackgroundMode=2时在色块边缘制造阴影效果,0为没有,1突起,2为下沉
Blur
设置为1开启win7的aero效果
BlurRegion, BlurRegion2, ...
如果没有定义BlurRegion,aero效果将应用于整个皮肤,格式为
BlurRegion=1,x1,y1,x2,y2,矩形区域;BlurRegion=2,x1,y1,x2,y2,r,圆角矩形,r为圆角半径;BlurRegion=3,x1,y1,x2,y2,椭圆区域。

以上三组参数,第一个若为0则该BlurRegion 无效,x1y1为区域左上角坐标,x2y2为右下角坐标
2)其他参数
Group
Config Group,多个Group名用"|"分隔,同样可以写在Rainmeter.ini/.thm内
Update
更新间隔,单位毫秒
TransitionUpdate
Bitmap使用TransitionFrames(切换间隔帧)时的切换间隔,单位毫秒DynamicWindowSize
设置为1的话皮肤尺寸使用的变量改变时皮肤尺寸会响应变化
DragMargins
设置鼠标在设定区域时不会拖动皮肤,格式为DragMargins=L,T,R,B,分别表示左、上、右、下的区域宽度
OnRefreshAction
皮肤加载或刷新时触发的动作
Author
作者= =
AppVersion
皮肤需要的最低RM版本,格式为Major*1000000 + Minor1*1000 + Minor2,RM2.1是2001000
LocalFont, LocalFont2, ...
允许使用没有安装到windows内的本地字体文件
2.[Metadata]
Metadata下面都是一些打酱油的注释类数据
Name
皮肤名称
Information
皮肤注释,使用"|"换行
Version
皮肤版本
License
许可证类型
3.变量区[Variables]
1)直接变量声明
变量名=变量值
引用时使用#变量名#,注意#变量名#是变量值的简单字符串替换
2)@Include
引用其他.ini/.inc中[Variables]区的变量或Style(关于Style的使用下文有说明),需完整路径当有多个文件需要引用时,使用@Include1=,@Include2=,...
二、名称不定的Section
1.Measures
任何下方有有效Measure=XXX的Section称为一个Measure,名称要保证唯一性
2.Meters
任何下方有有效Meter=XXX的Section称为一个Meter,名称要保证唯一性
3.Styles
不属于Measure和Meter的Section都被判定为Styles
Style可以在Meter中使用,格式
MeterStyle=StyleName
则位于StyleName下的所有参数都会添加到这个Meter下,如有重复参数,Meter下的会覆盖StyleName下的
MeterStyle后也可跟其他Meter,作用同上
关于Measures,Meters
Measure,Meter非简单一一对应关系,可以一对多、多对一,还可有不被Meter使用的
Measure(通常是做变量计算的CalcMeasure)与不使用Measure的Meter(固定图片、文字)下一讲详细解析Measure与Meter
Measures
一、类型
Section下的"Measure="后面就是Measure的类型了,分别如下
Calc
计算
CPU
CPU利用率
FreeDiskSpace
磁盘可用空间
Memory/PhysicalMemory/SwapMemory
总内存/物理内存/虚拟内存使用率
NetIn/NetOut/NetTotal
网络下行速度/网络上行速度/总网络速度
Plugin
使用插件
RegHKey
注册表值
Script
Lua脚本
Time
时间
Uptime
开机时间
二、通用参数
Group
Measure Group,多个Group名用"|"分隔
InvertMeasure
设置为1则Measure将测量相反的数值,如在FreeDiskSpace中使用则测量已用磁盘空间Disabled
设置为1则Measure将被禁用,禁用的Measure不会更新,引用为数值时会返回0,但是
引用为字符串时仍会返回一个文本
UpdateDivider
Measure更新间隔的乘子,Measure更新间隔=Update*UpdateDivider。

若设置为-1则会禁用更新,该Measure只会在刷新时更新
MaxValue
Measure显示的最大值,默认为1.0,Measure实际值不会改变。

在某些Meter例如HISTOGRAM中,这个参数还用来调节显示的比例
MinValue
Measure显示的最小值,默认为0.0,Measure实际值不会改变。

在某些Meter例如HISTOGRAM中,这个参数还用来调节显示的比例
Substitute
替换,格式为Substitute="find1":"replace1","find2":"replace2",...。

当需要替换引号"时,使用单引号',例:Substitute='"':"",将移除所有的引号。

单引号只能用于Substitute的一边,两边都使用单引号将无法识别
RegExpSubstitute
设置为1则可在Substitute中使用正则表达式
AverageSize
平均值组大小,例:AverageSize=10,则Measure将返回最近10个值的平均值
三、Measures
1.Calc
Formula
CalcMeasure计算的公式
UpdateRandom
设置为1则Calc使用的随机数在每次更新时都会重新取值,否则在刷新后随机数将固定HighBound
随机函数使用的上限
LowBound
随机函数使用的下限
算符:
+(加)
-(减)
*(乘)
/(除)
**(乘方)
%(求余)
&(按位与)
|(按位或)
^(按位异或)
~(按位非)
逻辑算符:
<>(不等于)
=(等于)
>(大于)
<(小于)
&&(逻辑与)
||(逻辑或)
函数:
ATAN(x),ASIN(x),ACOS(x),COS(x),SIN(x),TAN(x) - 三角函数ABS(x) - 绝对值
EXP(x) - e指数
LOG(x) - 以10为底的对数
LN(x) - 自然对数
SQRT(x) - 平方根
SGN(x) - x的符号,当x为正数时返回1,负数时返回-1
FRAC(x) - 返回x的小数部分
TRUNC(x) - 返回x的整数部分
FLOOR(x) - 向下舍入
CEIL(x) - 向下舍入
ROUND(x[,precision]) - 将x舍入到指定的位数
常数:
PI,~3.14159265...
E,~2.71828182...
条件算符:
"条件" ? "条件为真时的表达式" : "条件为假时的表达式"
随机函数:
函数"RANDOM"将返回位于"LowBound"与"HighBound"之间的整数其他进制:
0b - 二进制,例: 0b110110返回54
0o - 八进制,例: 0o123返回83
0x - 十六进制,例: 0xF1返回241
2.CPU
Processor
设置显示的核心,默认为0,即返回所有核心的平均值
3.FreeDiskSpace
Drive
盘符
Total
设置为1则返回总磁盘空间
Label
设置为1则返回磁盘标签
Type(2.2 r1074以后)
设置为1则返回磁盘类型
IgnoreRemovable
设置为1则忽略可移动磁盘
4.Memory/PhysicalMemory/SwapMemory
Total
设置为1则返回总容量
In/NetOut/NetTotal
NetInSpeed/NetOutSpeed/NetTotalSpeed
设置最高速度,单位为比特/秒
Interface
网卡ID,默认为0,即返回所有网卡的总和
Cumulative
设置为1则返回流量总值
6.Plugin
Plugin
使用的插件名称
7.Registry
RegHKey
注册表主键,有效值如下:
HKEY_CURRENT_CONFIG,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_CLASSE S_ROOT,HKEY_PERFORMANCE_DATA,HKEY_DYN_DATA
RegKey

RegValue
键值
8.Script
ScriptFile
Lua脚本名
9.Time
Format
时间格式,例:Format="%H:%M:%S"
TimeZone
时区,例:TimeZone=+8.0
DaylightSavingTime
夏令时
时间格式代码:
%a - 星期名缩写
%A - 星期名全称
%b - 月缩写
%B - 月全称。

相关文档
最新文档