It is currently March 28th, 2024, 4:02 pm

Debugging

Get help with creating, editing & fixing problems with skins
User avatar
sa1nt4ch
Posts: 49
Joined: December 16th, 2020, 8:30 am
Location: Switzerland

Debugging

Post by sa1nt4ch »

Hy I finished my first skin that I created from scratch. I din't want to use any plugin, so I used a lot of undokumented Measures, mainly from the UsageMonitor. Took me lot of research to figure out what does what. So if some could check if thouse Measures work on your machines that would be great.

The Skin is quite smal just 12Kb.

THX
Attachments
Tangram Fox_1.0.rmskin
(11.22 KiB) Downloaded 14 times
User avatar
balala
Rainmeter Sage
Posts: 16110
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Debugging

Post by balala »

sa1nt4ch wrote: December 28th, 2020, 2:48 pm So if some could check if thouse Measures work on your machines that would be great.
Seem to work for me, all of them.
What I'd do:
  • Seems not to worth to update the Fox\INFO FOX\INFO Fox.ini skin, because usually the shown information (CPU manufacturer and / or model and so on) don't change over time. That's why I probably would replace the Update=1000 option of the [Rainmeter] section with Update=-1. Using this option, the skin is never updated (excepting the very first moment after refresh / load), but this is not even needed.
  • Not sure I understand the reason of the skins included into the Fox\Tangram FOX\ config. I don't see what are they doing.
  • Additionally the measures of the Fox\Tangram FOX\Fox.ini skin ([MeasureCPU], [MeasureRAM] and [MeasureGPU]) are not used at all and as such you should remove them.
What seems a good and interesting idea is to create those skins in a way to have them not overlaping each other when loading them, but having the fox logo in to the same position. As said, this is intereseting.
Congratulations, keep working and improving the skins.
User avatar
Alex88
Posts: 92
Joined: July 18th, 2020, 1:23 am
Location: California

Re: Debugging

Post by Alex88 »

Most everything works for me - two things:
  • For INFO Fox and GPU Fox, instead of having:
    SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001   for my system, the info is instead in
    SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
    If I change those keys to 0000, it fixes 4 of the 5 issues. I don't know if 0000 or 0001 is the 'standard' but if you find that people are split between them, you should be able to use a measure to check which key is populated, and use !SetVariable to apply the correct key.
  • The only one that doesn't work with the above minor modifications is [getVRAM] linked to HardwareInformation.qwMemorySize. The Registry measure only supports REG_SZ and REG_DWORD and not REG_BINARY. I'm not sure if there's a Rainmeter-only way to convert a binary to a string or number.
Fox1.png
Last edited by Alex88 on July 8th, 2022, 9:11 am, edited 2 times in total.
User avatar
sa1nt4ch
Posts: 49
Joined: December 16th, 2020, 8:30 am
Location: Switzerland

Re: Debugging

Post by sa1nt4ch »

@balala

thank you for the feedback, I will clean up the code. The Fox.ini was the first I did, just to try and play around, I havent touched it since a while. :-) the INFO fox change makes sence.

@Alex88
thank you, I checked your key, I have there a Microsoft Hyper-V Video in the Driver.desc I asume, that since I have an Intel CPU which has a intigrated GPU Unit, that the 0000 value is for that intigrated GPU. As far as I know Ryzen does not have a GPU (correckt me if I'm wrong) on the Chip. This might be the issue :confused:

So I would kneed to set the variable accordingly, I will have to dig into that.

About the VRAM it should get 8GB according to your screen, dont know what the issue is there.
User avatar
sa1nt4ch
Posts: 49
Joined: December 16th, 2020, 8:30 am
Location: Switzerland

Re: Debugging

Post by sa1nt4ch »

@alex88

what is your DriverDesc Value in that key.

For the GPU Fox I tryed this fix.

Code: Select all

[getVRAM0000]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
RegValue=HardwareInformation.qwMemorySize

[getVRAM0001]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001
RegValue=HardwareInformation.qwMemorySize

[CheckProviderName]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
RegValue=ProviderName
IfMatch=Microsoft
IfMatchAction=[!SetOption calcVRAM Formula "(getVRAM0001)/1073741824"]
IfNotMatchAction=[!SetOption calcVRAM Formula "(getVRAM0000)/1073741824"]
IfMatchMode=1

[calcVRAM]
Measure=Calc
it workes for me, but I can't test it on a ryzen system.


the file below should fix the INFO Fox.ini
Attachments
INFO Fox.ini
(4.74 KiB) Downloaded 8 times
User avatar
balala
Rainmeter Sage
Posts: 16110
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Debugging

Post by balala »

Alex88 wrote: December 29th, 2020, 6:51 am
  • For INFO Fox and GPU Fox, instead of having:
    SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001   for my system, the info is instead in
    SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
    If I change those keys to 0000, it fixes 4 of the 5 issues. I don't know of 0000 or 0001 is the 'standard' but if you find that people are split between them, you should be able to use a measure to check which key is populated, and use !SetVariable to apply the correct key.
For me it is SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001, however the name of the key is not HardwareInformation.qwMemorySize, but HardwareInformation.MemorySize ([getVRAM] measure).
User avatar
sa1nt4ch
Posts: 49
Joined: December 16th, 2020, 8:30 am
Location: Switzerland

Re: Debugging

Post by sa1nt4ch »

HardwareInformation.MemorySize is the DWORD so 32bit
HardwareInformation.qwMemorySize is the QWORD so 64bit

so anybody that has more then 4GB of VRAM uses the QWORD

hmm so for GPU's with less then 4GB I will need to do a set option to. did not think about that.

how do i set two ifmatch :uhuh:
Last edited by sa1nt4ch on December 29th, 2020, 3:31 pm, edited 1 time in total.
User avatar
balala
Rainmeter Sage
Posts: 16110
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Debugging

Post by balala »

sa1nt4ch wrote: December 29th, 2020, 3:22 pm HardwareInformation.MemorySize is the DWORD so 32bit
HardwareInformation.qwMemorySize is the QWORD so 64bit

so anybody that has more then 4GB of VRAM uses the QWORD
Oh, I see. Makes sense...
User avatar
Alex88
Posts: 92
Joined: July 18th, 2020, 1:23 am
Location: California

Re: Debugging

Post by Alex88 »

sa1nt4ch wrote: December 29th, 2020, 11:12 am @alex88

what is your DriverDesc Value in that key.

...
For my DriverDesc it shows the GPU name, Radeon RX 580 Series:
DriverDesc.png
And that Info FOX works for me:
Capture.PNG
What you could do for all of the 0000 and 0001 measures, or any pair of measures that would share the same space, is to apply Substitute="^0$":"" and RegExpSubstitute=1 to those measures, making both 0000 and 0001 measures for each. Like in the above picture, if the key is empty or missing, it will return 0, so that Substitute will then change it from 0 to displaying nothing. Then you can stack the display of both the 0000 and 0001 measures, and it will automatically show the correct one. That seems to be the fastest fix, and you can also add UpdateDivider=-1 on all of them so that they don't update after the initial update (connected to the last paragraph). So the measures and the meter could work like this:

Code: Select all

[getProviderName0000]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0000
;RegValue=ProviderName
RegValue=DriverDesc
Substitute="^0$":""
RegExpSubstitute=1
UpdateDivider=-1

[getProviderName0001]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0001
;RegValue=ProviderName
RegValue=DriverDesc
Substitute="^0$":""
RegExpSubstitute=1
UpdateDivider=-1

...

[MetergetGPUname]
Meter=String
MeterStyle=AllStyle
StringAlign=Right
MeasureName=getProviderName0000
MeasureName2=getProviderName0001
Text=%1%2
X=590
Y=260
Angle=0.785
DynamicVariables=1
So there are a few ways you can go with it, using the IfMatch you have currently, the above Substitute method, or however you want to.

I just see that in the main [Rainmeter] section of Info FOX, you have Update=1 (update every millisecond). Should that be Update=1000 (1000ms = update once a second)? Or for Info FOX specifically, it seems that you can just do Update=-1 since nothing needs to be periodically updated. Edit: I reread above and see balala already suggested it, so you probably just missed the - in Update=-1.
User avatar
sa1nt4ch
Posts: 49
Joined: December 16th, 2020, 8:30 am
Location: Switzerland

Re: Debugging

Post by sa1nt4ch »

And that Info FOX works for me:
Great to hear, did the Fix for the GPU Fox also work?

About the Substitute I didn't know that one. But I think it will not work in this case. For bouth values in my case return some thing.
About Info.png
If the 0000 value on an Intel System is indeed the one chip GPU then moste PC will have a value set there, what I dont know is if its always Microsoft.

But I will try your Substitute Method on the GPU fox for the DWord Value, for GPU's with less then 4gb VRAM.

and thx for the pointer yes I missed the -


PS: I did some reading, and the 4xxx Ryzen have a Graphics Chip on them to so I wonder what that Value is there.
Post Reply