A plugin that extend Rainmeter functionality: Get apps volume and peak level, control apps volume and mute.
Options:
-
IgnoreSystemSound
(default = 1)
System sound is Windows notification sound.
Set to 0 to include System Sound. Set to 1 to skip System Sound. -
ExcludeApp
Set a blacklist of apps you do not want to control or care.
You need to include apps name and their extension, separate them by;
. Eg:ExcludeApp = rainmeter.exe;firefox.exe
Measure value:
Number: Total number of apps. You can use this value to generate enough child measures and prevent out of range error.
String: Current device name.
Example:
[AppVolumeParent]
Measure = Plugin
Plugin = AppVolume
IgnoreSystemSound = 1
Options:
-
Parent
You have to set this to Parent measure name. -
Index
(default = 0)
Index of app you want to get information and control. It has to be in range from 1 to number value of Parent measure. -
AppName
Specific name of app you want to get information and control. You need to include app name and its extension.
Eg:Spotify.exe
,AIMP.exe
If this option is not empty andIndex
is also set, it overridesIndex
option. -
NumberType
(default = volume)
Value you want to return in number value of measure. Valid options arevolume
orpeak
. -
StringType
(default = filename)
Value you want to return in string value of measure. Valid options arefilename
orfilepath
.
Measure value:
Number: Depend on what you set in NumberType
, it return current app volume or peak level.
String: Depend on what you set in StringType
, it return current app only file name or full path.
Example:
[AppIndex2]
Measure = Plugin
Plugin = AppVolume
Parent = AppVolumeParent
Index = 2
NumType = Peak
StringType = Filename
[FoobarVolume]
Measure = Plugin
Plugin = AppVolume
Parent = AppVolumeParent
AppName = Foobar.exe
NumType = Volume
StringType = Filepath
Both parent and child:
!CommandMeasure MeasureName "Update"
You can use this bang after changing measure option so you do not have to setDynamicVariables = 1
Eg:LeftMouseUpAction = [!SetOption AppIndex2 NumType Volume][!CommandMeasure AppIndex2 "Update"]
Only child:
-
!CommandMeasure MeasureName "SetVolume x"
x can be a absolute value (SetVolume 50
to set volume to 50%)
Or a relative value (SetVolume +20
to increase volume by 20% orSetVolume -40
to decrease volume by 40%) -
!CommandMeasure MeasureName "Mute"
Mute app. -
!CommandMeasure MeasureName "UnMute"
Unmute app. -
!CommandMeasure MeasureName "ToggleMute"
Toggle mute app.
Only available in Rainmeter version >= 4.1
An additional way to get app volume and peak by index or app name. DynamicVariables = 1
is required in where you use these variables.
[ParentMeasureName:GetVolumeFromIndex(x)]
[ParentMeasureName:GetPeakFromIndex(x)]
[ParentMeasureName:GetFileNameFromIndex(x)]
[ParentMeasureName:GetFilePathFromIndex(x)]
x is from 1 to number value of Parent measure.
[ParentMeasureName:GetVolumeFromAppName(name)]
[ParentMeasureName:GetPeakFromAppName(name)]
name is name of app you want to get. You need to include app name and its extension.
Example:
[AppVolumeParent]
Measure = Plugin
Plugin = AppVolume
IgnoreSoundSystem = 0
[Calc_SpotifyVolume]
Measure = Calc
Formula = [AppVolumeParent:GetVolumeFromAppName(spotify.exe)] * 100
DynamicVariables = 1
[Meter_SpotifyVolume]
Meter = String
MeasureName = Calc_SpotifyVolume
Text = Spotify: %1%
FontSize = 40
FontColor = 1FD662
AntiAlias = 1
In release page, I included an example skin pack, you can download, examine and then make your own skin.
Big thanks to theAzack9 and tjhrulz who helped me get through some C++ stuff that I'm too noob to understand. I can't finish this one without them.