Coder Social home page Coder Social logo

rainmeter / rainmeter Goto Github PK

View Code? Open in Web Editor NEW
4.4K 169.0 559.0 15.46 MB

Desktop customization tool for Windows

Home Page: https://rainmeter.net

License: GNU General Public License v2.0

C++ 45.22% C# 1.60% NSIS 2.25% C 50.72% Assembly 0.12% Batchfile 0.10%
rainmeter

rainmeter's Introduction

Rainmeter is a desktop customization tool for Windows. For more information and downloads, visit rainmeter.net.

For build instructions, see this.

Code signing policy

Our official releases are signed with a valid code signing certificate under the name of SignPath Foundation.

We appreciate the free code signing provided by SignPath.io and the free certificate provided by SignPath Foundation ๐Ÿ™

Privacy policy

This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.

rainmeter's People

Contributors

alia5 avatar andreeuuetoa avatar blackspirits avatar brianferguson avatar dcgrace avatar deathcrafter avatar gmikhail avatar jamesac avatar joehuu avatar jsmorley avatar kaiconan avatar kbuffington avatar lssg97 avatar maximmax42 avatar mrnerdhair avatar nek7u avatar osamz avatar oxidfox avatar poiru avatar rainy-kpe avatar sgtevmckay avatar smurfier avatar spx268 avatar stankolubomir avatar stenakis avatar theazack9 avatar tjhrulz avatar tomkort avatar verychard avatar wallboy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rainmeter's Issues

Can't open .ini file when use the relative path.

In "Rainmeter.ini"๏ผŒI set the "SkinPath=.\Skins". The skin is loaded normally, but when I "EditSkin", notepad tips "Path not exsit..." Blabla.............
Is it suggestion not to use relative path?

Downloading something in background?

Hi guys, i have a question, v4.0.0.2746, have unknown downloads in background?

in the v3.3.2.2743, no problems, no downloads in background

alt text

Windows 10 (10.0.14393.576) x64

Edit skin with spaces in filename fails with Sublime Text 2

(Not sure if this is a Rainmeter problem or Sublime Text 2.)

Example: If I try to open Gnometer 4 CPU.ini by right-clicking the skin and selecting "Edit Skin", Sublime Text 2 creates two empty files, one called "4" and one called "CPU.ini".

Works ok with Notepad++.

Rainmeter 2.4.0 beta r 1598 64-bit + Gnometer 1.3.0.3

AvancedCPU Plugin: Processes with same name will be ignored together

Excluding the first top process with name test.exe will also exclude a second process with the same name althought these are different processes named test and test#1 in perfmon.msc

The specific scenario is that i have 4 processes with same name all with the highest processing time but just the first one get shown... (skin enigma/processes for example)

Russian GUI is too tight

Hello!
I use Rainmeter for several years already and like it very much!

But russian GUI is a little bit too tight:

  1. this text field is too small ( I tried to make text in it a little bit shorter (see my today PR #63 ) but barely succeeded )
  2. this button is a bit too short. I assume its width is NUM_BUTTONWIDTH from 1st line of Russian.h but I have no access to Visual Studio and cannot prove it, otherwise it would be in my PR.

2016-03-19 20 51 45

TextInput plugin: Newlines are not saved/displayed correctly.

It is almost impossible to use the InputText plugin for multi-line text input, as newlines are not saved correctly, nor do they display correctly while editing the measure. Perhaps the plugin needs to be edited, or a new measure added. I don't know the solution, but I know a lot of people have encountered this problem over the past several years.

Regression of clear log potentially due to Win10

I just installed every release since 2708 which was the latest one I used regarding for features and noticed that I was not able to clear the log anymore up to the latest 4.0 release this year.

After clearing the log the display log is cleared, but after closing the dialog and reopening it, the old information are still displayed. It seems it displays the startup log of Rainmeter.

I made a friend of mine test it on his setup and it concluded the same behavior.

Steps to reproduce:

  • run Rainmeter
  • open about
  • click clear protocol
  • close dialog
  • open about

Expected behavior:
It should clear the protocol

Due to localization it is possible, that the steps are labeled differently (translating it from German).

I wonder if this is due to windows 10/windows 10 update because I am sure, that a prior version of Rainmeter worked.

Cannot install rainmeter 4.0 on Windows Server 2008 R2

I am using Windows Server 2008 R2 Enterprise 64-bit (build 7601) Service Pack 1 (this is the server release of Windows 7)
It is currently running rainmeter 3.3.2 r2609 64-bit
When I run the 4.0 installer exe I get the error
"Rainmeter 4.0 requires at least Windows 7 with Service Pack 1."

Unhandled exception in v4.1.0.2838

Hallo,
I have this skin installed "SystemInformation" and if i start CPU_OHM.ini then Rainmeter v4.1.0.2838 throws an unhandled exception and closes and i can not start it again without removing the OpenHardwareMonitorPlugin.dll Plugin. I think Rainmeter should not crash if a Plugin crashes.

Visual Studio Debug msg:
Exception thrown at 0x00007FFF3B924231 (OpenHardwareMonitorPlugin.dll) in Rainmeter.exe: 0xC0000005: Access violation reading location 0x0000000000000000.

Skin-SystemInformation.zip

; Maybe relevant lines:

[Variables]
WinB=Fintek F71889F
MCPU=AMD Phenom II X4 965 BE

; CPU Clocks from OpenHardwareMonitor
[OHMCPUFreq]
Measure=Plugin
Plugin=Plugins\OpenHardwareMonitorPlugin.dll
Hardware=#MCPU#
Type=Clocks
Sensor=CPU Core #1

; CPU Voltage from OpenHardwareMonitor
[OHMCPUVID]
Measure=Plugin
Plugin=Plugins\OpenHardwareMonitorPlugin.dll
Hardware=#WinB#
Type=Voltages
Sensor=CPU VCore

; CPU Temp from OpenHardwareMonitor
[OHMCPUTemp]
Measure=Plugin
Plugin=Plugins\OpenHardwareMonitorPlugin.dll
Hardware=#MCPU#
Type=Temperatures
Sensor=Core #1 - #4

I ran this on PC with Intel CPU

Add rainmeter IntPtr in Finalize func for plugins

I'm not good in C++ and maybe haven't wrote this correctly.
Is it possible to add in Finalize function for plugins second parameter with Rainmeter IntPtr?
My plugin supports multiple skins and I can't know what skin is closing - because Finalize func is calling with no Rainmeter data. So i can't dispose something that depend on one skin.
Or maybe make just second optional Finalize func? FinalizeSkin? That would be very nice and helpful.

Tabs in log have no width

When a literal tab is written to the log, it is displayed with no width, though copying the log entry preserves the tab.

For example:
image
copies as

MeasureTrackComparator: deferred first update wanted, setting delay (Visualizer\Song Information\Spotify.ini)

(that's a literal tab in there, though GH converts it to spaces for display)

Cannot build rainmeter with visual studio 2015

I can't bulid rainmeter with visual studio 2015. Platform Toolkit needs vs2017(v141), when I used VS2015 to compile it , VS said cannot find v141. Eventually, I build rainmeter with VS2017

Ip Address

There is a problem to get the ip address for the network.ini .

Layouts don't remember multi-monitors wallpaper

When saving a layout (with "include current wallpaper") while having set specific per-monitor wallpapers on Windows, Rainmeter saves only one image and it may be different than any of the multiple wallpapers set by windows.

I believe this is caused by Rainmeter looking for the registry key HKey_Current_User\\Control Panel\\Desktop\\Wallpaper.
The value of this key is, per my experience, always %APPDATA%\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper
and is always one file.

When one changes their wallpapers in Windows Personalization and sets images for specific monitors, additional files are created in the aforementioned Themes folder:
Transcoded_xxx where xxx is the 0-padded monitor index (0-based).
My dual-screen set-up has Transcoded_000 and Transcoded_001 when I setup different WPs. This doesn't erase nor change the TranscodedWallpaper file, so if that's the wallpaper fetched by Rainmeter it may be outdated.

I have no idea which version of Windows this behavior appeared in though ; maybe 7, maybe 8. Needs investigating to be thorough, but 10 works like that.

Ping plugin and network errors

The Ping plugin checks, on line 136 (file: .\Plugins\PluginPing\Ping.cpp), whether the request timed out (IP_REQ_TIMED_OUT); If it did timeout, it returns the timeout value, otherwise it returns the round-trip time.
The problem is: there are more error types then just time-outs. As documented by Microsoft, 19 out of 20 possible responses are an error of some type.

The fix is simple: change line 136 from

        value = (reply->Status == IP_REQ_TIMED_OUT) ? measure->timeoutValue : reply->RoundTripTime;

to

        value = (reply->Status != IP_SUCCESS) ? measure->timeoutValue : reply->RoundTripTime;

Compiles fine, and tested on Rainmeter 2.3.3 r1522 64-bit; working fine for me.

If nothing else, maybe add the IP_DEST_*_UNREACHABLE status' as errors; I was getting Reply from 192.168.1.2: Destination host unreachable. from the command prompt ping, while Rainmeter considered the computer online (with a ~400ms ping). (192.168.1.2 is my computer, I was pinging 192.168.1.9)

SwapMemory reports wrong memory size

SwapMemory reports the size of physical memory and the pagefile.

To fix this issue I propose that you create a new variable called "SwapMemory2" or "PagefileSize", and keep the erroneous function (as other software may rely on it).

Also something to note is some people may have multiple pagefiles on different disks, so it would be important to implement the "PagefileSize" variable to work similar to the "CPU" variable, where a "Drive" variable could select the drive ("0" being total, similar to the CPU measure's "Processor" variable.

[edit]
Windows' MEMORYSTATUSEX structure is the cause of these errors, it does not differentiate between "virtual memory" (RAM+Swapfile) and does not report swapfile size directly. It also does not allow you to see how much swapfile is on each drive.

Text meter sizes w/Angle

From the docs on the "Angle" param:

Note: The size and position of the text are always calculated as if the text is horizontal.

Can this be changed? It completely breaks setting a background color for a string meter, as the background will be drawn as if it was horizontal, and then the text rotated off of the background.

It also results in Rainmeter thinking the skin is FAR wider than it is (when trying to do vertical text, for instance), which breaks several other settings, such as 'keep on screen' (meter ends up being kept to the left half of the monitor, at times).

WebParser can't open file if it's used by another process.

It appears that Wininet can't open a file if it is used by another process. For example when GPU-Z is running, it keeps updating log file at every second, it is not possible to open that file for reading with WebParser plugin. I tested fixing the bug by resorting to std::fstream if the url starts with "file://" and using PathCreateFromUrlA to easily change the url format and it seems to work.

RoundLine Meter with ControlAngle false

If you have a RoundLine Meter with ControlAngle=0 the result will be... wrong.

In MeterRoundLine.cpp change line 129
from:
REAL sweepAngle = (REAL)(CONVERT_TO_DEGREES(m_RotationAngle * m_Value));
to:
REAL sweepAngle = (REAL)(CONVERT_TO_DEGREES(m_CntrlAngle ? m_RotationAngle * m_Value: m_RotationAngle));

Which allows the sweepAngle variable to be affected by the ControlAngle value. The result is circles are drawn instead of two polygons that are not circles for values <100%.

Color Clamping

After using a measure for each color (http://rainmeter.net/forum/viewtopic.php?f=14&t=20437), I tried to create the long version of Clamp() inline with LineColor, and that works, however, it's extremely unwieldy.

I find it odd that the Color::MakeARGB function seems to accept values above and below 255 and does what seems to be a modulo operation on them. Which may be a by product of casting somewhere within their API.

Is there any reason not to clamp the color range here:

ARGB ConfigParser::ParseColor(LPCTSTR string)
{
int R = 255, G = 255, B = 255, A = 255;
if (!ParseInt4(string, R, G, B, A))
{
if (wcsncmp(string, L"0x", 2) == 0)
{
string += 2; // skip prefix
}
size_t len = wcslen(string);
if (len >= 8 && !iswspace(string[6]))
{
swscanf(string, L"%02x%02x%02x%02x", &R, &G, &B, &A);
}
else if (len >= 6)
{
swscanf(string, L"%02x%02x%02x", &R, &G, &B);
}
}
return Color::MakeARGB(A, R, G, B);
}

I'm not clear if it's a common practice to take advantage of this "looping" pattern.

[REQ] New AdvancedMemory Plugin

Hi,

Just like the AdvancedCPU plugin, we need a plugin to do the same for memory usage (Working Set - Private) by process.

It will allow us to create skins showing top processes by memory usage.

An option to group processes with same name (i.e.: chrome.exe) will be useful. So for example, 3 processes like:

chrome.exe 10 MB
chrome.exe 20 MB
chrome.exe 30 MB

could be retrieved in one measure that would sum the values and we could finally get:
chrome.exe 60MB

Regards

Full Spotify Support

I think it would be nice if we had full Spotify support for Rainmeter seeing as it is becoming more and more popular these days and it is a desktop application.

I don't foresee it being too different than most other desktop music applications.

!CommandMeasure bang with formulas passes string value not formula result

The documentation says that bangs are a legal place to use a formula and gives this example
LeftMouseUpAction=[!SetOption SomeMeter W "((2.5 + 100) * 2)"]
While this example works it is because meter options are a legal place to use a formula, the option will be set to the string "((2.5 + 100) * 2)". Thus if you use a bang to set something that does not accept a formula or expect to get the result 205 and not a formula string you would need to use a calc instead and pass the reference to the calc. The documentation should include the caveat as the created a mild headache for me the other day as I had assumed I was using a bad formula.

SysInfo Plugin: Some measures are refreshed inside of GetString

I noticed that some measures of the SysInfo plugin (e.g. IP_ADDRESS, NET_MASK) are refreshed inside of GetString (e.g. call to GetIpAddrTable) instead of Update, making UpdateDivider effectively useless for those specific measures.

I understand the performance impact must be very small for any reasonable value of a skin/meter's Update, so feel free to close the issue as won't fix if you don't' think it should change.

NowPlaying Spotify does not update play state to playing except on song change

It is currently

if (GetWindowText(m_Window, buffer, 256) > 7)
{
	std::wstring title = buffer;

	std::wstring::size_type pos = title.find(L" - ");
	if (pos != std::wstring::npos)
	{
		std::wstring artist(title, 0, pos);
		pos += 3;  // Skip " - "
		std::wstring track(title, pos);

		if (track != m_Title || artist != m_Artist)
		{
			m_State = STATE_PLAYING;
			m_Title = track;
			m_Artist = artist;
			++m_TrackCount;

			if (m_Measures & MEASURE_LYRICS)
			{
				FindLyrics();
			}
		}
		return;
	}
}
else if (IsWindow(m_Window))
{
	m_State = STATE_PAUSED;
}

Since updating m_State = STATE_PLAYING; only happens if the title or artist as changed if you pause it then play it the state is never set back to playing. Moving it outside the check if title/artist has changed and keeping it inside the check that " - " exists in the string should be the correct place

NowPlaying: Spotify TRACK variable displays as 0, even though the docs say otherwise

https://cloud.githubusercontent.com/assets/4681031/3073894/a09f0bfc-e312-11e3-9c02-6419ba7dffd6.png
I've made a skin to show the Album and Track of my Spotify player. The Album is fine, but the Track displays as 0, even though the docs claim it should work. Using Rainmeter 3.1.0 beta r2286. I'm using the new black spotify, as shown in the screenshot. Album on left and Track on right in this example. RMSkin at http://ge.tt/api/1/files/1FlIYoh1/0/blob?download

A more conventional Padding values order.

This isn't too important, but it has been kinda-sorta bothersome.

I was checking the documentation for the Padding property, and I noticed it was a very unusual order for it's values. (Left, Top, Right, Bottom)

I say It's unusual because if you take CSS, a language that also implements padding in that manner, it goes Top, Right, Bottom and Left instead for it's 4-values syntax.

When it comes to computer coding, it's a very good idea to keep some standards intact to increase the ease of access of similar scripting languages' syntaxes.

Now, I agree that it's problematic when it comes to compatibility, so it all depends on how much the next versions will change things to the point where compatibility will be broken. So feel free to reject it if compability is your priority.

High DPI screen

Hi,

Is there a plan (or an existing way) to make rainmeter pixel perfect on High DPI Screen ? For the moment it's blurry :/

Thanks !

Regression in r2822 in RecycleManager

I just downgraded to r2821 from June 29, 2017 to check if it works again.

I have a skin using the RecycleManager and the OnChangeAction to trigger a meter update and redraw. This worked in r2821 but stopped working in r2822 and r2824. In order to update the skin I either have to refresh the skin, Rainmeter or open the RecycleBin.

Here are the skin files to reproduce:

If required, I can compile a more minimalistic version.

Cheers, Ich

Installer command switches broken

Attempting to utilize command switches for unattended installs results in switches either being completely ignored, or, with the case of the silent switch, < /S >, results in the installer not opening at all. If attempting to utilize additional switches, once /S is removed, the installer opens to a UI install, however all switches are still ignored.

For example, the following results in nothing occurring (including no temp directory or files in %APPDATA%\Local\Temp):

Rainmeter-3.3-r2468-beta.exe /S /VERSION=64 /PORTABLE=0 /DESKTOPSHORTCUT=0 /STARTUP=1

Whereas this results in all switches being ignored:
Rainmeter-3.3-r2468-beta.exe /VERSION=64 /PORTABLE=0 /DESKTOPSHORTCUT=0 /STARTUP=1 /ALLUSERS=1

This has been occurring for at least as far back as revision 2423. I performed an LT deployment first week of August and assumed I had simply mistyped a switch when Rainmeter failed to install during the deployment, however, upon updating my deployment with 3.3 r2468, it's apparent it's the installer.

https://docs.rainmeter.net/manual/installing-rainmeter/

Impossible to load fully dynamic skins

I have a visualizer skin where all of the meters are created on load using a factory script. Unless I prepopulate one of the dynamically generated includes, rainmeter refuses to even try to load the script, stating that it contains no meters and is therefore not valid.

If the script had been allowed to update just once, all of the meters for the visualizer would have loaded. Would it be possible to delay checking for meters in a skin by one update?

Rainmeter:
4.0.0 beta r2620 64-bit (Sep 4 2016)
Windows 10 Pro 64-bit (build 14393)
Path: C:\Program Files\Rainmeter
IniFile: C:\Users\user\AppData\Roaming\Rainmeter\Rainmeter.ini
SkinPath: C:\Users\user\Documents\Rainmeter\Skins\

The newest version of Spotify breaks the plugin

I updated Spotify today, and now Spotify.dll no longer returns the artist name, song name or album art.

I have not had time to test other functionality of the plugin to see if any of it still works.

Spotify Plugin:
1.2.3.0

Rainmeter:
4.0.0 beta r2620 64-bit (Sep 4 2016)
Windows 10 Pro 64-bit (build 14393)
Path: C:\Program Files\Rainmeter
IniFile: C:\Users\user\AppData\Roaming\Rainmeter\Rainmeter.ini
SkinPath: C:\Users\user\Documents\Rainmeter\Skins\

4.0 Beta: Clear log Button on About - Not Really Clearing

Hi,

OS: Windows 8.1 x64

Rainmeter: 4.0 beta release (revision 2589)

Problem: When I hit the clear button to clear the log on the About screen.

It indeed clears it from display, but that's all. Comes right back when I reopen UI.

Expected: I expected the log to be really cleared when I hit the clear button.

Thanks,

Will

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.