It is currently May 27th, 2024, 6:57 pm

MYiniMeter - A minimalistic title-bar skin suite

A package of skins with a "theme" or by a single author
sendblink23
Posts: 9
Joined: February 9th, 2022, 3:54 pm
Location: Puerto Rico

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by sendblink23 »

Yincognito wrote: February 19th, 2022, 1:19 pm Excellent - at least one thing went out the way it was supposed to do, LOL. I also prefer having usages no more than 100%, and I eventually have to use that new utility counter since it allows multiple physical processors, thread count above 64, and so on. By the way, have you noticed when you had that 127% usage, was the frequency also close to the max? Cause the way I want it to be is to have "normal" 0 to 100% usages, but let the user correlate the usage with the frequency, e.g. 100% at 3 GHz is going to mean less usage than 100% at 4 GHz and such. There is a % Processor Performance counter which I already use in the skin to get the right frequency, maybe I can use it to proportionally lower down the utility counter values so that they don't go past 100% and more or less match what the old "counter" (i.e. what you have in your current code) yields. In other wors, I'd like to use the new counter (and take advantage of its benefits) to get the old (what you deemed correct) usages - will see what can be done.
Testing again with Cinebench with that other Processor.ini When its 127%, the Frequency from the skin does go full clocked as its supposed to be

The other issue is baffling, really. It's the same freaking code, which on my computer gives the correct result and on yours not. About the only difference between our systems is that I have 2 GPU cards (one integrated, one discrete) and you only have 1 (the discrete one), so the issue is either related to the index of the card or the way the max part is written. Can you please post here (either via copy pasting it into a code - the </> button - box or attaching a screenshot) the output of the following from PowerShell:

Code: Select all

$items = Get-CimInstance -classname Win32_VideoController -filter "DeviceID like '%VideoController%'" | select Name,@{n='AdapterRAM';e={[string][math]::round($_.'AdapterRAM'/1GB,2)}},CurrentNumberOfColors,Availability,CurrentBitsPerPixel,CurrentRefreshRate,CurrentScanMode,VideoArchitecture,VideoMemoryType,CurrentHorizontalResolution,CurrentVerticalResolution | sort PNPDeviceID; $edits = Get-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0*" -name * -erroraction SilentlyContinue | select @{n='HardwareInformation.qwMemorySize';e={[string][math]::round($_.'HardwareInformation.qwMemorySize'/1GB,2)}} | sort MatchingDeviceId; write-host 'Item Count =' $items.Count; for ($i=0; $i -lt $items.Count; $i++) {write-host 'Item Index =' $i; write-host 'Item [' $i '] =' $items[$i]; write-host 'Edit [' $i '] =' $edits[$i]; write-host 'Item [' $i '].AdapterRAM =' $items[$i].'AdapterRAM'; write-host 'Edit [' $i '].HardwareInformation.qwMemorySize =' $edits[$i].'HardwareInformation.qwMemorySize'; write-host 'Max  ( Items [' $i '] , Edits [' $i '] ) =' [string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize') '=' ([string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize')); $items[$i].'AdapterRAM' = ([string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize'))}; $items | format-list
Here, I output to the console everything, at each step of the process, so hopefully that will help more in identifying exactly where this process fails on your system. You can try the alternate method as well, it creates a whole new powershell object instead of modifying the first one, though it should output the same 4 GB and not the 12 GB:

Code: Select all

$items0 = Get-CimInstance -classname Win32_VideoController -filter "DeviceID like '%VideoController%'" | select Name,@{n='AdapterRAM';e={[string][math]::round($_.'AdapterRAM'/1GB,2)}},CurrentNumberOfColors,Availability,CurrentBitsPerPixel,CurrentRefreshRate,CurrentScanMode,VideoArchitecture,VideoMemoryType,CurrentHorizontalResolution,CurrentVerticalResolution | sort PNPDeviceID; $items1 = Get-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0*" -name * -erroraction SilentlyContinue | select @{n='HardwareInformation.qwMemorySize';e={[string][math]::round($_.'HardwareInformation.qwMemorySize'/1GB,2)}} | sort MatchingDeviceId; $items = @(); for ($i=0; $i -lt $items0.Count; $i++) {$items += New-Object PSObject -Property @{'Name' = $items0[$i].'Name'; 'AdapterRAM' = [string][math]::max($items0[$i].'AdapterRAM',$items1[$i].'HardwareInformation.qwMemorySize'); 'CurrentNumberOfColors' = $items0[$i].'CurrentNumberOfColors'; 'Availability' = $items0[$i].'Availability'; 'CurrentBitsPerPixel' = $items0[$i].'CurrentBitsPerPixel'; 'CurrentRefreshRate' = $items0[$i].'CurrentRefreshRate'; 'CurrentScanMode' = $items0[$i].'CurrentScanMode'; 'VideoArchitecture' = $items0[$i].'VideoArchitecture'; 'VideoMemoryType' = $items0[$i].'VideoMemoryType'; 'CurrentHorizontalResolution' = $items0[$i].'CurrentHorizontalResolution'; 'CurrentVerticalResolution' = $items0[$i].'CurrentVerticalResolution'}}; $items | format-list
By the way, thanks for your patience and willingness to follow these steps and identify / correct these issues. Unfortunately, a skin designer usually has only his computer to test things out, so if problems appear for another user, his environment is best suited to debug whatever the problem is. ;-)
I like testing stuff :P - I know it usually leads to improving things

Okay screenshots:
Image
Note the 2nd one is not giving anything after using the command, reason I tried it 2 times
User avatar
Yincognito
Rainmeter Sage
Posts: 7341
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by Yincognito »

sendblink23 wrote: February 19th, 2022, 3:17 pmTesting again with Cinebench with that other Processor.ini When its 127%, the Frequency from the skin does go full clocked as its supposed to be
Thanks. I just tested the adjustments I mentioned earlier, and while the usages of the "new" method are lowered and won't go past 100%, they are still much closer to the unadjusted values than to the "old" values (i.e. the ones you prefer). Since we're at it, the Processor.ini I previously posted reuses some code from the 1.4.0 version, but just so you know, a much easier way to get the values you prefer - but this time in the "new" code - is to simply (mass) replace in Notepad++ all instances of % Processor Utility with % Processor Time, since the latter counter exists in the Processor Information category and its values should be the same as those in the plain Processor category.

I added a variable called ProcessorUMCounter at the start of the below file and used that to make it very easy to "toggle" between modes (old vs new) without changing anything else in the skin - see if it works the way you want. I might just choose this way going forward, as it gives control to the user in choosing which values he wants to show in the skin. Will see if I add the variable to the Settings skin or not, but overall I believe this is the best way to approach things, without irreversibly choosing a single way to implement this:
Processor.ini
sendblink23 wrote: February 19th, 2022, 3:17 pmI like testing stuff :P - I know it usually leads to improving things

Okay screenshots:
Note the 2nd one is not giving anything after using the command, reason I tried it 2 times
Alright, I believe I know what the problem is, and the rudimentary "logging" of operations has been proved useful. Apparently .Count has a few strange "issues" in certain PowerShell versions, mainly that it won't always return the correct count when that is 1 (like your case) - like explained here. To make it work properly, it seems that you have to explicitly configure it to count the array elements (i.e. what we need here), using @($somevariable).Count instead of simply $somevariable.Count. So, try this, maybe this was the whole problem with the code:

Code: Select all

$items = Get-CimInstance -classname Win32_VideoController -filter "DeviceID like '%VideoController%'" | select Name,@{n='AdapterRAM';e={[string][math]::round($_.'AdapterRAM'/1GB,2)}},CurrentNumberOfColors,Availability,CurrentBitsPerPixel,CurrentRefreshRate,CurrentScanMode,VideoArchitecture,VideoMemoryType,CurrentHorizontalResolution,CurrentVerticalResolution | sort PNPDeviceID; $edits = Get-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0*" -name * -erroraction SilentlyContinue | select @{n='HardwareInformation.qwMemorySize';e={[string][math]::round($_.'HardwareInformation.qwMemorySize'/1GB,2)}} | sort MatchingDeviceId; for ($i=0; $i -lt @($items).Count; $i++) {$items[$i].'AdapterRAM' = [string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize')}; $items | format-list
Let me know if it works now.
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
sendblink23
Posts: 9
Joined: February 9th, 2022, 3:54 pm
Location: Puerto Rico

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by sendblink23 »

Yincognito wrote: February 19th, 2022, 5:00 pm Thanks. I just tested the adjustments I mentioned earlier, and while the usages of the "new" method are lowered and won't go past 100%, they are still much closer to the unadjusted values than to the "old" values (i.e. the ones you prefer). Since we're at it, the Processor.ini I previously posted reuses some code from the 1.4.0 version, but just so you know, a much easier way to get the values you prefer - but this time in the "new" code - is to simply (mass) replace in Notepad++ all instances of % Processor Utility with % Processor Time, since the latter counter exists in the Processor Information category and its values should be the same as those in the plain Processor category.

I added a variable called ProcessorUMCounter at the start of the below file and used that to make it very easy to "toggle" between modes (old vs new) without changing anything else in the skin - see if it works the way you want. I might just choose this way going forward, as it gives control to the user in choosing which values he wants to show in the skin. Will see if I add the variable to the Settings skin or not, but overall I believe this is the best way to approach things, without irreversibly choosing a single way to implement this:
Processor.ini
Yeah testing that one and changing the ProcessorUMCounter= with "% Processor Time" or "% Processor Utility" both work as you instructed. Definitely do it that way *user manually changes it if he wants to.
Alright, I believe I know what the problem is, and the rudimentary "logging" of operations has been proved useful. Apparently .Count has a few strange "issues" in certain PowerShell versions, mainly that it won't always return the correct count when that is 1 (like your case) - like explained here. To make it work properly, it seems that you have to explicitly configure it to count the array elements (i.e. what we need here), using @($somevariable).Count instead of simply $somevariable.Count. So, try this, maybe this was the whole problem with the code:

Code: Select all

$items = Get-CimInstance -classname Win32_VideoController -filter "DeviceID like '%VideoController%'" | select Name,@{n='AdapterRAM';e={[string][math]::round($_.'AdapterRAM'/1GB,2)}},CurrentNumberOfColors,Availability,CurrentBitsPerPixel,CurrentRefreshRate,CurrentScanMode,VideoArchitecture,VideoMemoryType,CurrentHorizontalResolution,CurrentVerticalResolution | sort PNPDeviceID; $edits = Get-ItemProperty -path "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0*" -name * -erroraction SilentlyContinue | select @{n='HardwareInformation.qwMemorySize';e={[string][math]::round($_.'HardwareInformation.qwMemorySize'/1GB,2)}} | sort MatchingDeviceId; for ($i=0; $i -lt @($items).Count; $i++) {$items[$i].'AdapterRAM' = [string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize')}; $items | format-list
Let me know if it works now.
It seems this worked it finally says 12
Image
User avatar
Yincognito
Rainmeter Sage
Posts: 7341
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by Yincognito »

sendblink23 wrote: February 19th, 2022, 5:36 pm Yeah testing that one and changing the ProcessorUMCounter= with "% Processor Time" or "% Processor Utility" both work as you instructed. Definitely do it that way *user manually changes it if he wants to.

It seems this worked it finally says 12
Awesome! Now all it takes is replacing the Parameter line from [MS_RunCommand_VideoInfo] in Video.ini that we talked about before with:

Code: Select all

Parameter=-command $items = Get-CimInstance -classname Win32_VideoController -filter \"DeviceID like '%VideoController%'\" | select Name,@{n='AdapterRAM';e={[string][math]::round($_.'AdapterRAM'/1GB,2)}},CurrentNumberOfColors,Availability,CurrentBitsPerPixel,CurrentRefreshRate,CurrentScanMode,VideoArchitecture,VideoMemoryType,CurrentHorizontalResolution,CurrentVerticalResolution | sort PNPDeviceID; $edits = Get-ItemProperty -path \"HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0*\" -name * -erroraction SilentlyContinue | select @{n='HardwareInformation.qwMemorySize';e={[string][math]::round($_.'HardwareInformation.qwMemorySize'/1GB,2)}} | sort MatchingDeviceId; for ($i=0; $i -lt @($items).Count; $i++) {$items[$i].'AdapterRAM' = [string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize')}; $items | format-list
I can't believe such a little PowerShell quirk prevented an otherwise valid piece of code from providing the right result... :jawdrop
Well, at least we both learned something from it, LMAO.

P.S. Yes, I'll definitely go this way with the Processor skin, it basically checks all the boxes, both technically and in terms of customization from the user.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
sendblink23
Posts: 9
Joined: February 9th, 2022, 3:54 pm
Location: Puerto Rico

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by sendblink23 »

Yincognito wrote: February 19th, 2022, 5:59 pm Awesome! Now all it takes is replacing the Parameter line from [MS_RunCommand_VideoInfo] in Video.ini that we talked about before with:

Code: Select all

Parameter=-command $items = Get-CimInstance -classname Win32_VideoController -filter \"DeviceID like '%VideoController%'\" | select Name,@{n='AdapterRAM';e={[string][math]::round($_.'AdapterRAM'/1GB,2)}},CurrentNumberOfColors,Availability,CurrentBitsPerPixel,CurrentRefreshRate,CurrentScanMode,VideoArchitecture,VideoMemoryType,CurrentHorizontalResolution,CurrentVerticalResolution | sort PNPDeviceID; $edits = Get-ItemProperty -path \"HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}\0*\" -name * -erroraction SilentlyContinue | select @{n='HardwareInformation.qwMemorySize';e={[string][math]::round($_.'HardwareInformation.qwMemorySize'/1GB,2)}} | sort MatchingDeviceId; for ($i=0; $i -lt @($items).Count; $i++) {$items[$i].'AdapterRAM' = [string][math]::max($items[$i].'AdapterRAM',$edits[$i].'HardwareInformation.qwMemorySize')}; $items | format-list
I can't believe such a little PowerShell quirk prevented an otherwise valid piece of code from providing the right result... :jawdrop
Well, at least we both learned something from it, LMAO.

P.S. Yes, I'll definitely go this way with the Processor skin, it basically checks all the boxes, both technically and in terms of customization from the user.
Yup its working with that now showing the 12gb :)
User avatar
Yincognito
Rainmeter Sage
Posts: 7341
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by Yincognito »

sendblink23 wrote: February 19th, 2022, 6:14 pm Yup its working with that now showing the 12gb :)
Excellent! :great: Thanks again for going along with this, your feeback was extremely useful. :thumbup:
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Yincognito
Rainmeter Sage
Posts: 7341
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by Yincognito »

sendblink23 wrote: February 19th, 2022, 5:36 pmYeah testing that one and changing the ProcessorUMCounter= with "% Processor Time" or "% Processor Utility" both work as you instructed. Definitely do it that way *user manually changes it if he wants to.
Ok, I've added a variable called CPUUsageCounter to the Settings skin in the future 1.5.0 version of the suite, for easy adjustment if needed - it's the equivalent of the ProcessorUMCounter variable, just with a more descriptive name and relocated into Variables.inc and Settings skin instead of directly in the Processor skin:
MYiniMeter - Settings.jpg
So yeah, the feature will definitely be in the next release. ;-)
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
ZXCVBOT

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by ZXCVBOT »

It's not a request, but can you change the behaviour for the Toggler? I want it to keep the previous one used - the next time I reopen the PC, instead of scrolling and finding the one that is not helpful.

Also, if you are looking for feature suggestions for next release :sly: :
Try implementing maybe frosted-glass plugin (if it looks good) - giving it a Fluent look.

Next would be resizing meters (not the one by dragging, rather some sort of scale in the Settings that changes the (- well yes -) scale. (I know changing the text does this, but its improper without padding.)

Also, slower process changes in Processes.

Lastly, how can I change the gradient for the player - believe me I tried looking for it.
Just saw the Pandora's Box of Requests - Nice name btw. :great:
User avatar
Yincognito
Rainmeter Sage
Posts: 7341
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by Yincognito »

ZXCVBOT wrote: October 30th, 2023, 8:02 am It's not a request, but can you change the behaviour for the Toggler? I want it to keep the previous one used - the next time I reopen the PC, instead of scrolling and finding the one that is not helpful.

Also, if you are looking for feature suggestions for next release :sly: :
Try implementing maybe frosted-glass plugin (if it looks good) - giving it a Fluent look.

Next would be resizing meters (not the one by dragging, rather some sort of scale in the Settings that changes the (- well yes -) scale. (I know changing the text does this, but its improper without padding.)

Also, slower process changes in Processes.

Lastly, how can I change the gradient for the player - believe me I tried looking for it.
Just saw the Pandora's Box of Requests - Nice name btw. :great:
Thanks for the feedback, most of these if not all are doable or already existing. This doesn't necessarily mean they will be implemented in the next release though. As for each point you mentioned:

- remembering the toggling action can easily be implemented by anyone, simply by adding a bang writing the value of the ActionIndex variable to the skin file when scrolling, e.g. [!WriteKeyValue Variables ActionIndex "[#ActionIndex]"] added to the scroll actions in [MT_Rainmeter_Toggler] from the Toggler.ini file

- Frosted Glass can also be easily be implemented by anyone, simply by adding a measure like in the example here to the desired (.ini) skins in the suite (by the way, is it just me or the Frosted Glass sample here moves in slow motion by itself the skin you are dragging?)

- like you said, scaling is already something that's done when changing the value in the Appearance -> General Text -> Small Text Size box from the Settings skin, but while the padding values can be freely modified too in the Small Text Padding and Medium Text Padding boxes just below, their values do not automatically follow the changes in the text size; this was done intentionally when I designed the suite, so that the user is given free choice on those values; it's a good idea to add proportionality between text size and paddings and it crossed my mind several times, but it has to be done in a way that allows the user both approaches (free change and automatic proportionality) based on a toggle or something, I'll have to think about it; if you want to add it yourself, I suppose that changing the text padding part in @Resources\Variables.inc to something like:

Code: Select all

TextPaddingTop=(-1*#TextSize#/7)
TextPaddingLeft=(1.75*#TextSize#/7)
TextPaddingBottom=(-1*#TextSize#/7)
TextPaddingRight=(1.75*#TextSize#/7)
will be close to what you want, with the multiplier obviously your desired "standard" padding at a text size of 7

- the speed of changing the category of processes displayed in the Processes skin from the suite is already adjustable from the Settings -> Variables -> Processes List box, where you can set it to values greater than 1 to slow it down according to the standard update rate in skins, or even set it to -1 to stop iterating through those categories altogether and then use manual change through scrolling as desired (I think that's available in version 1.4.0 too)

- I'm not sure what gradient you're referring to though, so I'll talk about them all. In the Player skin, there are:
a) the general skin gradient that's applied to all skins in the suite and can be changed from the Settings -> Appearance -> Skin Appearance boxes
b) the click based progress gradient showing track position as a full height bar, which can be changed from the [MT_NowPlaying_Progress] meter in the Player.ini file
c) the scroll based volume gradient showing the volume percentage line at the bottom of the skin, which can be changed from the [MT_NowPlaying_Volume] meter in the Player.ini file
Player Gradients.jpg
with all of them following the general principle for gradients in Rainmeter, available here (the skin gradient used for the background is also done via a Shape meter, available in the @Resources\Design.inc file).
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
ZXCVBOT

Re: MYiniMeter - A minimalistic title-bar skin suite

Post by ZXCVBOT »

Point by point:

1. I can do it - does not mean it should not be already present. I get people want to toggle their skins or hide-unhidden and unhide-hidden skins, but remembering makes it better. (C'mon its just a line/word change)

2. I know implementing it is super-easy. But, its your skin, so, whatever you think would look good - should be done.
As for your slow motion - It is for you, not me (Restarting Rainmeter can do wonders sometimes - Even reinstallin' it 8-) ! In this case deleting the plugin and example skin and adding/installing it again should work).

3. I am suggesting scaling, not asking for help in padding the font (You know, you could have said use the settings gui, but noo). But thanks anyway.
"(free change and automatic proportionality)" is also a good thing. :thumbup:

4. I was referring to (b) the progress of the track playing. Its too old-looking :thumbdown: for me. As for defining the gradients, I checked it out a long time ago this year and already know how to do so.

Also, I never knew the volume bar was at the bottom. Just noticed :D.

1 and 4 are fairly easy and for the betterment, so, maybe (fingers-crossed) can/will you implement them?