Git Product home page Git Product logo

raiguard / moderngadgets Goto Github PK

View Code? Open in Web Editor NEW
301.0 22.0 32.0 41.53 MB

Sleek, minimalist, information-dense gadgets for the modern desktop. Inspired by the AddGadgets.com system monitoring gadgets. Built on the Rainmeter platform.

License: MIT License

Lua 16.18% PHP 0.27% Batchfile 1.09% Assembly 14.78% C++ 2.19% Pawn 11.20% NASL 50.70% HTML 3.36% SourcePawn 0.23%
rainmeter gadget rainmeter-platform monitoring-gadgets hwinfo

moderngadgets's Introduction

NOTICE: this project has come to a close. Here is an actively maintained project that this suite was based on.

ModernGadgets is a set of sleek, minimalist, information-dense gadgets that are designed to fit right into your modern desktop. It is inspired by the AddGadgets.com system monitoring gadgets and is heavily based on SilverAzide's Gadget Replicas.

ModernGadgets is released on the Rainmeter platform under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 license. The source code is made available on GitHub under an MIT License.

Project Status

This project is complete, and is in maintenance mode. I will still answer issues and fix outstanding bugs, but do not expect any new features.

Requirements

Rainmeter 4.4 or newer: https://www.rainmeter.net

HWiNFO: https://www.hwinfo.com

.NET Framework 4.5 or newer

Alternatively, CPU Meter supports CoreTemp or SpeedFan for CPU core temperatures and / or fan speeds.

Installation Instructions

ModernGadgets releases are packaged as .RMSKIN files using the Rainmeter skin packager. Download the latest version from the releases page, then double-click it to install.

Credits

Designed and programmed by raiguard.

Inspired by SilverAzide's "Gadgets for Rainmeter" suite.

"IBM Plex Sans" font from Google Fonts, under the Apache 2.0 License.

"Font Awesome" icons from FortAwesome, under the Font Awesome Free license.

Other icons source from icons8.com.

Weather icons by Erik Flowers: https://erikflowers.github.io/weather-icons/

Weather information is powered by The Weather Channel: https://weather.com/

Additional Attributions

SilverAzide - Original Gadgets suite, ActiveNet plugin, NetMonitor utility, fixed precision format script

stangowner - HWiNFO Plugin, HWiNFO Shared Memory Viewer

moderngadgets's People

Contributors

mattcocca avatar mcowger avatar paddlesau avatar raiguard avatar servb avatar silverazide 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

moderngadgets's Issues

Global settings skin

Skin to change settings that apply to all gadgets. Will include background border, row spacing, and temperature units. Will also have update notification options, including opting in to testing development versions, settings backups options, and a "reset to defaults" button.

Depends on #16.

To-do

  • Base skin (background, close button, etc.)
  • Global settings script
  • Background border
  • Show temperatures in Fahrenheit
  • Large row spacing
  • Automatically notify of available updates
  • Opt-in to development versions
  • Settings backups
  • Line Graph antialiasing
  • Reset all settings to default

New update checker format

I have recently come across semver.lua by kikito, which is a semantic versioning comparison script. It is much more capable and better designed than my in-house made script. I would like to implement this as a replacement for the current script.

The script cannot be implemented as-is - it is designed to be invoked via a require function, which is not possible with Rainmeter's LUA. It will need to be spliced and tweaked to be invoked from the skin.

CPU Fans are not displaying properly

HWInfo is reporting the GPU and CPU fans fine but ModernGadgets is not. I have attached a screen shot to show you what I am talking about. I suspect I need to get the correct id's for this? I really have not clue on how to find this. Any help would be great!
capture

Thanks!

Network Meter: Bytes/sec display option

Currently, the speed is indicated in bits per second but we should be able to select if we want to see it in bits or bytes.

Todo:

  • Implement toggle in settings
  • Add to import and defaults functions

Rapidly loading/unloading gadgets in Gadget Manager desyncs buttons

Due to the slight amount of time it takes for WebParser to parse the file and read the states of the gadgets, rapidly clicking a gadget's button will cause the button to get desynced from the actual state of the gadget (the gadget is loaded, but the button is in the off position).

Todo:

  • Create local variables
  • Move toggle button image handling to measures
  • Redesign WebParser measures to change the variables only on refresh
  • Redesign settings script to change the variables

Switch to Direct2D font rendering

This section in the Rainmeter documentation describes a feature that was introduced back in Rainmeter 3.0. It details an option that will use Direct2D to render fonts, rather than what it normally uses (the name escapes me).

The advantages to using this is that the fonts will be much more readable, and the boundaries of text meters will be WAY more consistent. This will allow greater simplification of positioning equations and will introduce an overall cleaner look.

However, it won't come without issues. In initial testing, switching to Direct2D completely messes up the positioning of text, and makes the bar lines appear way closer to the text they are under. It also makes the text appear smaller overall, and increasing the font size by 1 makes it too big (maybe apply bolding to all text?) The positioning equations and options in the config scripts will all have to be redone, which will take time.

To-do

  • Activate Direct2D on all skins
  • Fix font size and style (will probably need to go bold)
  • Fix text positioning and content margins
  • Fix bar line positioning under meters
  • Update graph positioning functions
  • Update settings and config scripts to account for the new positioning

CPU Usage Meter Not Showing All Cores

Hello,

I've noticed that I cannot get the ModernGadgets skin to show all cores for my CPU. It looks like its only showing up to 4 but my HWINFO and TaskManager are stating I'm running at the expected 6 cores. Is there something wrong with my skin setup or am I missing some settings? Here is a screenshot of what I am seeing with some config menus opened up (Link).

Thanks!

Persistent update notifications on latest version

Hello , after the latest update there is a window keeps poping up tells that there is a new update but i already got the latest version so i hope that there is a solution for this pop up window it's kinda annoying.

Setup skin not updating correctly in several cases

A flaw I didn't notice before v1.1.0's release is that when the setup skin hides itself after the settings import prompt, it doesn't actually unload the settings import UI. Because of this, if the update available prompt appears before the skin is refreshed, it will show both the settings import UI and the update available UI. The fix for this is to simply add a !HideMeterGroup bang to the settings import buttons.

Another issue is when the update available prompt shows up, the meters haven't been updated for the new releaseVer value. This can be fixed simply by updating those meters as part of the 'update available' actions in UpdateChecker.lua.

Todo:

  • Add !HideMeterGroup bang to settings import buttons
  • Add !UpdateMeterGroup bang to 'update available' actions

Skin Scaling

Utilize TransformationMatrix to make the gadgets and config skins scalable. This ability would mostly be useful for those with 4K monitors, where the default gadget size is too small. Will be freely changeable using an input box, and right-clicking on the global settings skin (where the input box will be) will offer a context option to revert to default sizing in case a user accidentally makes it too large.

To-do

  • Implement transformationmatrix on all meters
  • Fix positioning equations to account for transformationmatrix
  • All gadgets
  • Fix border blurring

Current issues

  • Line graph border does not scale correctly, due to it needing a ScaleMargins attribute so it can dynamically scale to any width

Chronometer

New gadget! Will support digital and (in the future) analog time formats for main display. Includes alarms, a stopwatch, and timers, as well as a world clock, all built-in. Additionally, the main display can display the date and weekday. Also included will be system uptime and custom event countdowns (later on).

Features

  • Digital time display that can automatically match local Windows settings, or be customized
  • Date display, also customizable
  • Built-in stopwatch with lap support
  • Three timers
  • Support for up to five alarms with customizable alert sounds
  • System uptime display
  • Small LuaCalendar display at bottom that shows current week
  • Customizable key bindings for activating stopwatch, timers
  • Multiple event countdowns

To-do

  • Basic meters (background, etc.)
  • Digital time meters
  • Date/weekday meters
  • Alarms
  • Stopwatch
  • Timers
  • System uptime measures/meters
  • Config skin

NetMonitor support in Network Meter

SilverAzide added something to his gadgets that is really awesome and really useful: NetMonitor. It's a Windows service that, once installed, will constantly monitor network traffic with much higher precision than Rainmeter's built-in measures. NetMonitor will be introduced as an alternate way to get Network Meter information, and is completely optional.

To-do

  • Add NetMonitor to addons folder
  • Create test skin for installing, enabling, pausing, disabling, and uninstalling the service
  • Implement that into Network Meter's settings
  • Add alternate measures and appropriate logic to switch between the two methods
  • Add toggle to Network Meter settings

Replace most images with character fonts

Rainmeter 4.1 has introduced "character reference variables" which allow the use of specialized character fonts such as FontAwesome and Material Icons to be used in skins. Several images in ModernGadgets (up/down arrows, refresh buttons, eject buttons, etc.) will be replaced with strings using FontAwesome and Material Icons. This will consequently allow the elimination of 78 meters from Disks Meter, 52 of which were images, greatly improving performance.

The settings toggle buttons will also be getting replaced with checkboxes and radio buttons, allowing for greater flexibility when it comes to settings skins.

To-do

  • Import fonts
  • Create standardized margins and padding for arrows
  • Convert all arrow images to FontAwesome text

Disk Temperatures

Was originally planned for v1.0.0, but it was delayed due to issues with showing/hiding the temperature meters correctly.

To-do:

  • Re-implement disks meter portion of HWiNFO config tool
  • Fix show/hide logic
  • Add toggle to Disks Meter settings

CPU Meter not toggling thread measures

Thanks to MastroMicio for reporting this bug. The CPU Config Script doesn't actually enable/disable CPU usage and Core Temp measures like it is supposed to.

To-do

  • Add measures to groups by thread number
  • Add !EnableMeasureGroup and !DisableMeasureGroup bangs to the CPU config script
  • Enable/disable the clock speed measures, accounting for hyperthreading

AMD GPU Issues / Network Meter Errors

Hello @iamanai i've a Request ,
i hope that u can make in Network Meter Automatic Refresh Skin Every 5min (Default Setting) or so as the User Custom Setting so every one can make the time he want to refresh skin .
Because when the Network Gets cut and back at the same time it gives Ping 3000MS and in the Ext IP gives (Error) so i need to Manually Refresh Skin to get them back again , hope u can do it .
Thanks in Advance .
Regards , Ahmed Elrayes

Development Version syntax in Update Checker

Pretty self-explanatory. Need to implement functionality to convert prerelease tags (alpha, beta, pre, rc) to numbers and compare them in the update checking process. Will enable people to switch to "beta tester" mode and get notifications for new development versions they can test.

Convert all files to UTF-8

Before Rainmeter 4.1 introduced character reference variables, the files had to be encoded either in UTF-16 LE (which proved to not work well with GitHub), or ANSI (Windows-1252) to be able to use some characters (specifically the degree symbol). These alternate encodings made the files not play well with lots of text editors, and were in general a pain to work with, not to mention significantly bigger than their UTF-8 counterparts. All text files will be converted to UTF-8, and any usage of non-UTF-8 characters will be handled with character reference variables.

To-do

  • Add CR variables to StyleSheet
  • Convert all files

Windows fall update task mgr

With the windows 10 fall creators update the gpu has been added to the task manager window. Should this also be made compatible with the GPU meter?

Network Meter: Distinguish between LAN and Global connections

Looking through the Rainmeter documentation, it is possible to add capability to Network Meter to give different status messages depending on whether it's completely disconnected from all networks, or just disconnected from the global internet (similar to SilverAzide's gadget and the original). I would like to add this capability and display which ones are connected at all times (trickery with the globe image, maybe?).

Todo:

  • Add an appropriate image
  • Implement necessary measures
  • Add usecase to image config measure

Disable individual disks in Disks Meter

Option will be a space-deliminated list with each drive letter you want to disable. Will prevent Disks Meter from monitoring those drives, therefore preventing them from showing up in the skin.

To-do:

  • Add parsing and disabling function to LUA script
  • Add input box to settings skin

Configurable "bgWidth" and "graphHeight"

I wanted the graphs to be a bit bigger so I found that if I changed these settings in @Resources\Settings\Stylesheet.inc they worked perfectly - everything scaled as expected when I updated them. Sounds like these would be good settings to have as configurable options if possible.

CPU usage measures are all incorrect

This page of the documentation just caused me to discover a problem I was completely unaware of: All of the CPU usage measures are wrong! [MeasureCpuUsageCore1] is actually measuring average CPU usage, [MeasureCpuUsageCore2] is actually measuring Core 1, and so on. The [MeasureCpuUsageTotal] is actually correct, but the 'Total=1' option does nothing!

This proves just how useful reading the documentation can be.

To-do

  • Fix references
  • Rename [MeasureCpuUsageTotal] to [MeasureCpuUsageAverage]

Settings system refactor

Multiple issues have popped up with the settings system, such that it needs to be fully redesigned. The settings will move back to being local, with changes being automatically copied to the external location as a backup. After updating, the values in the external files will be copied back in so settings will still be preserved.

The ReadINI and WriteINI functions will no longer be directly used to edit the files. They will only be used to compare values.

Also, functionality must be added to make the imported backup affect the skin INI's as well as the variables. This was an oversight in v1.0.0 that must be corrected.

It should also be noted that settings backups can be turned off through the global settings skin.

To-do

  • Move settings management and update checking functionalities out of gadget manager and into a dedicated (invisible) skin
  • Rename 'ReferenceFiles' subfolder to 'Settings'
  • Create 'Defaults' subfolder to contain default settings (will remain unchanged)
  • Implement 'invokeAllSettings()' function into all gadget settings scripts, which will invoke all the settings changes for each script with the current variable values
  • Implement 'setDefaults()' function into all gadget settings scripts, similar to invokeAllSettings(), but with the default values
  • Completely scrap SettingsManagement.lua
  • Write new 'SettingsBackup.lua' script with the backup functionality described above
  • Implement backups toggle in global settings skin

Notes

  • This will fix all problems relating to nonexistent settings files, since they will now always exist
  • Upon updating, the settings will all have reset. The invisible config skin will check for the existence of a backup. If the backup exists, it will automatically transfer the values to the local settings files, then it will invoke all the config scripts for each gadget, changing each gadget's configuration to match those settings before refreshing them
  • If no backup exists, it will be assumed that it is a new installation
  • Currently debating whether or not it should be an option to have backups

Color customization

Each gadget's config skin will have a tab for color customization. The customizable colors will be those shown on line graphs and bars, as well as arrows. To change a color, the user clicks on the color in a list and uses RainRGB. Alpha values cannot be changed.

To-do

  • Find a good way to add a color customization tab to the config skins
  • Create template for changing a color

CPU Meter

  • Core usages (1-20) and average usage
  • RAM and page file usage
  • Fan speed (for alternate fan display)

Network Meter

  • Upload rate
  • Download rate

GPU Meter

  • Core usage
  • Fan speed
  • VRAM usage
  • Memory Controller usage

Disks Meter

  • Disks 1-26 (ugh)

Standardize and simplify all settings

The current way of doing things is just too complicated. Each gadget has a hard-coded settings script that changes settings directly pertaining to that gadget. However, this has caused complications and makes it almost impossible to create gadget variants.

So much of the settings logic will be returning to the .INI files, with the settings scripts only changing a few things. The idea is that the INI files use calc measures and variables to calculate all the settings on load, and when a setting is changed, the variables are changed, and !SetOption bangs are used to immediately enforce those changes without refreshing. This will bulk up the INIs a bit, but will make things much simpler going forward. There will be no !WriteKeyValue bangs used on the gadgets themselves anymore, which was the biggest problem with the previous way of doing things.

To-do

  • Standardize functions for logging, changing variables, and updating toggle buttons
  • Implement new buttons (checkboxes)
  • Refactor CPU Meter settings
  • Refactor Network Meter settings
  • Refactor GPU Meter settings
  • Refactor Disks Meter settings

GPU Meter not showing any signs of life after completing tutorial.

DUMPandGlobalSettings.zip
So, all the other gadgets work(CPU Usage, Disks, Network) or the ones I choose to use at least. I have completely went through the tutorial and double checked. I didn't have to change any of the sensor ID's at all. I actually did have this working fine at one point a while back but that was before I had a major issue with Windows 10 a while back and basically wiped my entire computer and started from scratch.. yeah Windows 10 is awful sometimes. Anyways, I feel like fixing it finally and will leave the Dump file and the global settings file like the tutorial says too. If anyone could give me some insight, that would be nice because I really enjoy this gadget as it has become a necessity. Thanks :)

Alternate CPU Fan Display

Another option for displaying CPU fan information which will put it up above the CPU cores. The difference here is it will also show a percentage and a bar, as well as put a line on the graph. This alternate display is for those with variable fan speeds that change frequently.

Todo:

  • Add alternate fan measures and meters
  • Add maximum fan speed variable
  • Implement toggle in CPU settings
  • Implement inputbox to enter maximum speed
  • Tie all into HWiNFO availability

UI toggle for Fahrenheit temperatures

Just noticed that there's no way to change the temperatures from Celsius to Fahrenheit through any of the config skins! Needs to be addressed when global settings are implemented!

New "update available" notification skin

Will be the only interface for the dedicated settings backups/update checking skin coming in v1.1.0. Will display the update's version number, provide a download button, and provide an on-demand settings backup if it is not enabled to be automatic.

It's unlikely, but it would be pretty cool if it could somehow display the changelog for that version as well.

Depends on #16

Network Meter: Show Ping

The "Ping" Plugin can be used to find the ping to certain websites. This could allow Network Meter to check the ping periodically, and display it if the user so desires. The destination website can be changed via the config skin.

To-do

  • Add ping measure, counter measure, and URL variable
  • Add meter to Network Meter
  • Create toggle and URL input in config skin

Disks Meter Optimizations

Disks Meter is a huge resource hog. With 343 measures and 320 meters, and 6755 lines of code, it is a monster, using 35MB of RAM and single-handedly causing huge lag spikes in Rainmeter every second when it updates. Several changes must be made to rectify this:

  1. Disk Temperatures
    This feature is still unimplemented, and isn't really necessary, so everything to do with disk temps will be axed. This will cut 26 measures and 26 meters.

  2. Read/Write text and arrows
    Currently there are four meters per disk for the read/write readouts. Two arrows and two strings. The plan is to use character reference variables to integrate the arrows directly into the string, and make both be one string. This will cut 78 meters.

3. Optimize RunCommand measures
Currently, every disk has two command measures: One for the file explorer link (which actually doesn't work anyway, never has), and one for the eject button. Experiments are being done to consolidate these into one measure for all the disks. This will cut 51 measures from the skin.
The commands broke because of a parsing issue in the beta, and has now been fixed. Optimizing the measures further, however, is impossible.

In the future, there will also be a "Disks Meter Lite" variant that will significantly cut down on the amount of information provided, and be limited to monitoring five disks instead of all 26.

Upcoming Gadgets

Just a space to list the gadgets that are planned for the future.

  • App Launcher
  • Audio Meter
  • Battery Meter
  • Calendar
  • Clipboard Meter
  • Clock
  • Process Meter
  • Weather Meter

Top process(es)

I love this skin. The only thing it is missing from the last skin I was using is a "Top Processes" area. Nice to know what process is eating up most CPU :) Seems like something that could be added to the CPU gadget before or after the histogram. I started looking into what it would take to implement this, but got a bit lost in the config files.. I'll see if I can figure it out but figured I'd add an issue here for feature request if this is something you might tackle..

Dual GPU Meter

Alternate form of GPU Meter, which will support monitoring for two distinct graphics cards. Contents will be compacted to preserve as much vertical space as possible. The line graph will have four modes: GPU0 only, GPU1 only, average of the two, or disabled.

To-do

  • Create new measures for GPU1
  • Create new meters for dual GPU mode (alternate subpage)
  • Add dual GPU mode toggle to config skin
  • Add HWiNFO configuration for GPU1
  • Add line graph mode switch (GPU0, GPU1, or average) (to disable, use the regular line graph toggle)

All zeroes with correct sensor ID's and Instances

Sorry if i'm just being dumb, but I followed the HWiNFO instructions and the troubleshooting section, but my temps all read 0 and my GPU meter reads 0 for everything.
eljibzg 1

The hex values in the HWiNFO Config tool seem to all be correct so I don't know what to check. I actually didn't have to change anything from the default values when I downloaded the skin so there is probably something small I am missing somewhere. I have the .NET Framework 4.6.2 so that seems fine.

I think i made the correct smv dump (from the about HWiNFOSharedMemoryViewer window)
SMV Dump.txt

Resetting to default doesn't invoke INI changes

A design flaw. Although it resets the variables, it does not actually reset the gadgets.

NOTE: To invoke this function, right-click on the gadget manager and click "DEBUG: Reset to defaults". There will be a UI toggle for this in the global settings skin (#6).

Thermal Throttling Detection

Enhancement for CPU Meter to display when thermal throttling gets enabled. Will change the CPU icon to a warning icon, play a warning sound (optional), and add a red tint to the line graph (histogram at 100%). Users will be able to disable this warning, control the volume of the sound, and disable the sound if they so desire.

To-do

  • Add necessary meters
  • Add HWiNFO measure
  • Add value to HWiNFO tool
  • Add toggle in CPU Meter settings

Disks meter always showing 100% usage

When I first started using this skin it worked fine, however now the disks meter will always show 100% usage, I've tried updating the skin, HWINFO, even rain meter, but nothing has fixed it.
Also note, i don't think it would have caused it but between the time it stopped working and now, I've had an external HDD fail that i have since moved to internal

modern gadgets

Manual Max VRAM

Some users have requested that the GPU's max VRAM be able to be manually set, because HWiNFO lacks that sensor on some cards.

Todo:

  • Add alternate measure for max VRAM
  • Implement toggle and input box
  • Add to import and defaults functions

Average CPU usage graph

Totally forgot to implement this for v1.0.0. Optional variant of line graph that will only display 1 line for CPU usage, which is an average of all cores. The measure is already there, just needs a meter and a toggle in CPU settings.

Todo:

  • Add to graph config script
  • Implement toggle in CPU Settings
  • Tie into graph toggle
  • Add to UpdateSettings and SetDefaults

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.