mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
22 Commits
add-licens
...
v0.29
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efd6707e61 | ||
|
|
8032ea3fc7 | ||
|
|
d0a232d888 | ||
|
|
a6bd18f019 | ||
|
|
a09c252c2e | ||
|
|
99d3c61897 | ||
|
|
4a6decb0be | ||
|
|
80b9fdb8ac | ||
|
|
e3c293942c | ||
|
|
42e910e635 | ||
|
|
18b6ae07b2 | ||
|
|
fa2875fbee | ||
|
|
f2bfb24fb4 | ||
|
|
adc81721ac | ||
|
|
9da061d621 | ||
|
|
274c04bf61 | ||
|
|
2d286ca04f | ||
|
|
2c1fa01863 | ||
|
|
0370ef7bc0 | ||
|
|
2f2ef23ee4 | ||
|
|
756ed44741 | ||
|
|
efb6a087b4 |
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
10
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Custom issue template
|
||||
about: Describe this issue template's purpose here.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
10
ASUSWmi.cs
10
ASUSWmi.cs
@@ -1,6 +1,4 @@
|
||||
using GHelper;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using System.Management;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
|
||||
@@ -35,8 +33,8 @@ public class ASUSWmi
|
||||
public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022
|
||||
public const int PPT_CPUB1 = 0x001200B1; // APU PPT on 2022
|
||||
|
||||
public const int PPT_APUC1 = 0x001200C1;
|
||||
public const int PPT_APUC2 = 0x001200C2;
|
||||
public const int PPT_APUC1 = 0x001200C1;
|
||||
public const int PPT_APUC2 = 0x001200C2;
|
||||
|
||||
public const int PerformanceBalanced = 0;
|
||||
public const int PerformanceTurbo = 1;
|
||||
@@ -187,7 +185,7 @@ public class ASUSWmi
|
||||
if (curve.Length != 16) return;
|
||||
if (curve.All(singleByte => singleByte == 0)) return;
|
||||
|
||||
Logger.WriteLine("Fans" + ((device == 1)?"GPU":"CPU") + " " + BitConverter.ToString(curve));
|
||||
Logger.WriteLine("Fans" + ((device == 1) ? "GPU" : "CPU") + " " + BitConverter.ToString(curve));
|
||||
|
||||
if (device == 1)
|
||||
DeviceSet(DevsGPUFanCurve, curve);
|
||||
|
||||
20
Aura.cs
20
Aura.cs
@@ -43,7 +43,7 @@ public class Aura
|
||||
{
|
||||
|
||||
HidDevice[] HidDeviceList;
|
||||
int[] deviceIds = { 0x1854, 0x1869, 0x1866, 0x19b6 };
|
||||
int[] deviceIds = { 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0 };
|
||||
|
||||
HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
|
||||
|
||||
@@ -63,18 +63,14 @@ public class Aura
|
||||
|
||||
foreach (HidDevice device in HidDeviceList)
|
||||
{
|
||||
if (device.IsConnected)
|
||||
if (device.IsConnected && device.Description.Contains("HID"))
|
||||
{
|
||||
if (device.Description.IndexOf("HID") >= 0)
|
||||
{
|
||||
device.OpenDevice();
|
||||
byte[] msg = AuraMessage(Mode, Color1, Color2, Speed);
|
||||
device.Write(msg);
|
||||
device.Write(MESSAGE_SET);
|
||||
device.Write(MESSAGE_APPLY);
|
||||
device.CloseDevice();
|
||||
}
|
||||
|
||||
device.OpenDevice();
|
||||
byte[] msg = AuraMessage(Mode, Color1, Color2, Speed);
|
||||
device.Write(msg);
|
||||
device.Write(MESSAGE_SET);
|
||||
device.Write(MESSAGE_APPLY);
|
||||
device.CloseDevice();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
128
CODE_OF_CONDUCT.md
Normal file
128
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
1
CONTRIBUTING.md
Normal file
1
CONTRIBUTING.md
Normal file
@@ -0,0 +1 @@
|
||||
Please, feel free to contribute. Especially if you own model differnt from G14 2022 and can offer extra features or support.
|
||||
@@ -16,7 +16,7 @@
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.28</AssemblyVersion>
|
||||
<AssemblyVersion>0.29</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
using System.Collections;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using static Tools.ScreenInterrogatory;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Tools
|
||||
{
|
||||
|
||||
43
README.md
43
README.md
@@ -1,42 +1,44 @@
|
||||
# G-Helper | GHelper
|
||||
# G-Helper (GHelper)
|
||||
|
||||
## Open source Armory Crate alternative for Asus ROG Zephyrus G14, G15, Flow X13, Flow X16, and other models
|
||||
|
||||
A small utility that allows you to do almost everything you could do with Armory Crate but without extra bloat and unnecessary services.
|
||||
|
||||
## Main advantages
|
||||
### :gift: Main advantages
|
||||
|
||||
1. Seamless and automatic GPU switching (without asking you to close all apps, etc)
|
||||
2. All performance modes can be fully customized (with fan curves and PPTs)
|
||||
3. Very lightweight and consumes almost no resources, doesn't install any services. Just a single exe to run
|
||||
|
||||
## [Download latest release](https://github.com/seerge/g-helper/releases)
|
||||
### [:floppy_disk: Download latest release](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
|
||||
If you like this app, please star :star: it on Github and spread a word about it!
|
||||
|
||||

|
||||
|
||||
## Main features
|
||||
### :zap: Main features
|
||||
|
||||
1. Built-in **Performance modes**: Silent - Balanced - Turbo (with default fan curves)
|
||||
2. **GPU modes**: Eco -Standard - Ultimate
|
||||
3. Laptop screen refresh rate 60hz or 120hz (144hz, etc depending on the model) with display overdrive (OD)
|
||||
4. Default and custom fan profiles for every performance mode
|
||||
5. Power limits (PPT) for every performance mode
|
||||
6. CPU urbo boost mode
|
||||
6. CPU turbo boost mode
|
||||
7. Keyboard backlit animation and colors
|
||||
8. Anime matrix control thanks to [Starlight](https://github.com/vddCore/Starlight) + some tweaks from my side (including animated GIFs)
|
||||
9. FN+F5 to cycle through performance modes (with OSD notification) and FN+F4 to cycle through keyboard animation modes
|
||||
9. FN+F5 cycles performance modes, FN+F4 cycles keyboard animation modes
|
||||
10. Keybindings for M3 and M4 keys
|
||||
11. Battery charge limit to preserve battery health
|
||||
12. Monitor CPU / GPU temperature, fan speeds and battery discharge rate
|
||||
|
||||
## Automatic switching of modes when on battery or plugged in
|
||||
- Performance modes
|
||||
- GPU modes
|
||||
- Screen refresh rate
|
||||
### :apple: Automatic switching of modes when on battery or plugged in
|
||||
- Performance modes (app remembers last mode used on battery or when plugged)
|
||||
- GPU modes (eco on battery, stanard when plugged)
|
||||
- Screen refresh rate (60hz on battery, 120+ hz when plugged)
|
||||
|
||||
To keep auto switching and hotkeys working the app needs to stay in running in the tray. It doesn't consume any resources.
|
||||
|
||||
## Performance Modes
|
||||
### :rocket: Performance Modes
|
||||
|
||||
Modes are **same** as in Armory Crate (as they are stored in bios), including default fan curves
|
||||
|
||||
@@ -46,13 +48,26 @@ Modes are **same** as in Armory Crate (as they are stored in bios), including de
|
||||
|
||||
PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios.
|
||||
|
||||
## GPU Modes
|
||||
### :video_game: GPU Modes
|
||||
|
||||
1. Eco mode : only low power integrated GPU enabled, iGPU drives built in display
|
||||
2. Standard mode (Windows Hybrid) : iGPU and dGPU enabled, iGPU drives built in display
|
||||
3. Ultimate mode: iGPU and dGPU enabled, but dGPU drives built in display (supported only on G14 2022 model)
|
||||
|
||||
## How to install
|
||||
### :question: FAQ
|
||||
|
||||
#### How do I stop Armory Crate install popup appearing every time I press M4 / Rog key?
|
||||
Go to BIOS (F2 on boot), open Advanced Settings (F8) and disable "Armory Control Intrerface"
|
||||
|
||||
#### Why Ultimate GPU mode is not available on my laptop?
|
||||
Ultimate mode is supported (by hardware) only on G14 2022 (and possibly other models from 2022+)
|
||||
|
||||
#### App doesn't start / or crashes, what should I do ?
|
||||
Open "Event Viewer" from start menu, go to Windows Logs -> Application and check for recent Errors mentioning G-Helper. If you see one - please post a [new issue](https://github.com/seerge/g-helper/issues) with all details from this error.
|
||||
|
||||
----------------------------
|
||||
|
||||
### How to install
|
||||
|
||||
1. Download latest release from [**Releases Page**](https://github.com/seerge/g-helper/releases)
|
||||
2. Unzip to a folder of your choice
|
||||
@@ -74,7 +89,7 @@ Designed and developed for Asus Zephyrus G14 2022 (with AMD Radeon iGPU and dGPU
|
||||
|
||||
I don't have a Microsoft certificate to sign the app yet, so if you get a warning from Windows Defender on launch (Windows Protected your PC), click More Info -> Run anyway. Alternatively you can compile and run project by yourself using Visual Studio :)
|
||||
|
||||
Settings file is stored at %AppData%\GHelper
|
||||
Settings file is stored at ``%AppData%\GHelper``
|
||||
|
||||
------------------
|
||||
|
||||
|
||||
77
RoundedButton.cs
Normal file
77
RoundedButton.cs
Normal file
@@ -0,0 +1,77 @@
|
||||
using System.ComponentModel;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace CustomControls
|
||||
{
|
||||
public class RoundedButton : Button
|
||||
{
|
||||
//Fields
|
||||
private int borderSize = 5;
|
||||
private int borderRadius = 5;
|
||||
private bool activated = false;
|
||||
private Color borderColor = Color.Transparent;
|
||||
|
||||
public Color BorderColor
|
||||
{
|
||||
get { return borderColor; }
|
||||
set
|
||||
{
|
||||
borderColor = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool Activated
|
||||
{
|
||||
get { return activated; }
|
||||
set
|
||||
{
|
||||
if (activated != value)
|
||||
this.Invalidate();
|
||||
activated = value;
|
||||
}
|
||||
}
|
||||
|
||||
public RoundedButton()
|
||||
{
|
||||
this.FlatStyle = FlatStyle.Flat;
|
||||
this.FlatAppearance.BorderSize = 0;
|
||||
}
|
||||
|
||||
private GraphicsPath GetFigurePath(Rectangle rect, int radius)
|
||||
{
|
||||
GraphicsPath path = new GraphicsPath();
|
||||
float curveSize = radius * 2F;
|
||||
|
||||
path.StartFigure();
|
||||
path.AddArc(rect.X, rect.Y, curveSize, curveSize, 180, 90);
|
||||
path.AddArc(rect.Right - curveSize, rect.Y, curveSize, curveSize, 270, 90);
|
||||
path.AddArc(rect.Right - curveSize, rect.Bottom - curveSize, curveSize, curveSize, 0, 90);
|
||||
path.AddArc(rect.X, rect.Bottom - curveSize, curveSize, curveSize, 90, 90);
|
||||
path.CloseFigure();
|
||||
return path;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pevent)
|
||||
{
|
||||
base.OnPaint(pevent);
|
||||
|
||||
Rectangle rectSurface = this.ClientRectangle;
|
||||
Rectangle rectBorder = Rectangle.Inflate(rectSurface, -borderSize, -borderSize);
|
||||
|
||||
Color borderDrawColor = activated ? borderColor : Color.Transparent;
|
||||
|
||||
using (GraphicsPath pathSurface = GetFigurePath(rectSurface, borderRadius+borderSize))
|
||||
using (GraphicsPath pathBorder = GetFigurePath(rectBorder, borderRadius))
|
||||
using (Pen penSurface = new Pen(this.Parent.BackColor, borderSize))
|
||||
using (Pen penBorder = new Pen(borderDrawColor, borderSize))
|
||||
{
|
||||
pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
this.Region = new Region(pathSurface);
|
||||
pevent.Graphics.DrawPath(penSurface, pathSurface);
|
||||
pevent.Graphics.DrawPath(penBorder, pathBorder);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
16
SECURITY.md
Normal file
16
SECURITY.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 0.25+ | :white_check_mark: |
|
||||
| < 0.24 | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Use this section to tell people how to report a vulnerability.
|
||||
|
||||
Tell them where to go, how often they can expect to get an update on a
|
||||
reported vulnerability, what to expect if the vulnerability is accepted or
|
||||
declined, etc.
|
||||
65
Settings.Designer.cs
generated
65
Settings.Designer.cs
generated
@@ -1,4 +1,6 @@
|
||||
namespace GHelper
|
||||
using CustomControls;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
partial class SettingsForm
|
||||
{
|
||||
@@ -52,23 +54,23 @@
|
||||
labelPerf = new Label();
|
||||
labelCPUFan = new Label();
|
||||
tablePerf = new TableLayoutPanel();
|
||||
buttonTurbo = new Button();
|
||||
buttonBalanced = new Button();
|
||||
buttonSilent = new Button();
|
||||
buttonTurbo = new RoundedButton();
|
||||
buttonBalanced = new RoundedButton();
|
||||
buttonSilent = new RoundedButton();
|
||||
panelGPU = new Panel();
|
||||
checkGPU = new CheckBox();
|
||||
pictureGPU = new PictureBox();
|
||||
labelGPU = new Label();
|
||||
labelGPUFan = new Label();
|
||||
tableGPU = new TableLayoutPanel();
|
||||
buttonUltimate = new Button();
|
||||
buttonStandard = new Button();
|
||||
buttonEco = new Button();
|
||||
buttonUltimate = new RoundedButton();
|
||||
buttonStandard = new RoundedButton();
|
||||
buttonEco = new RoundedButton();
|
||||
panelScreen = new Panel();
|
||||
checkScreen = new CheckBox();
|
||||
tableScreen = new TableLayoutPanel();
|
||||
button120Hz = new Button();
|
||||
button60Hz = new Button();
|
||||
button120Hz = new RoundedButton();
|
||||
button60Hz = new RoundedButton();
|
||||
pictureScreen = new PictureBox();
|
||||
labelSreen = new Label();
|
||||
panelKeyboard = new Panel();
|
||||
@@ -402,11 +404,14 @@
|
||||
//
|
||||
// buttonTurbo
|
||||
//
|
||||
buttonTurbo.Activated = false;
|
||||
buttonTurbo.BackColor = SystemColors.ControlLightLight;
|
||||
buttonTurbo.BorderColor = Color.Transparent;
|
||||
buttonTurbo.Dock = DockStyle.Fill;
|
||||
buttonTurbo.FlatAppearance.BorderColor = Color.FromArgb(192, 0, 0);
|
||||
buttonTurbo.FlatAppearance.BorderSize = 0;
|
||||
buttonTurbo.FlatStyle = FlatStyle.Flat;
|
||||
buttonTurbo.ForeColor = SystemColors.ControlText;
|
||||
buttonTurbo.Location = new Point(464, 12);
|
||||
buttonTurbo.Margin = new Padding(8, 12, 8, 12);
|
||||
buttonTurbo.Name = "buttonTurbo";
|
||||
@@ -417,11 +422,14 @@
|
||||
//
|
||||
// buttonBalanced
|
||||
//
|
||||
buttonBalanced.Activated = false;
|
||||
buttonBalanced.BackColor = SystemColors.ControlLightLight;
|
||||
buttonBalanced.BorderColor = Color.Transparent;
|
||||
buttonBalanced.Dock = DockStyle.Fill;
|
||||
buttonBalanced.FlatAppearance.BorderColor = Color.FromArgb(0, 0, 192);
|
||||
buttonBalanced.FlatAppearance.BorderSize = 0;
|
||||
buttonBalanced.FlatStyle = FlatStyle.Flat;
|
||||
buttonBalanced.ForeColor = SystemColors.ControlText;
|
||||
buttonBalanced.Location = new Point(236, 12);
|
||||
buttonBalanced.Margin = new Padding(8, 12, 8, 12);
|
||||
buttonBalanced.Name = "buttonBalanced";
|
||||
@@ -432,12 +440,15 @@
|
||||
//
|
||||
// buttonSilent
|
||||
//
|
||||
buttonSilent.Activated = false;
|
||||
buttonSilent.BackColor = SystemColors.ControlLightLight;
|
||||
buttonSilent.BorderColor = Color.Transparent;
|
||||
buttonSilent.CausesValidation = false;
|
||||
buttonSilent.Dock = DockStyle.Fill;
|
||||
buttonSilent.FlatAppearance.BorderColor = Color.FromArgb(0, 192, 192);
|
||||
buttonSilent.FlatAppearance.BorderSize = 0;
|
||||
buttonSilent.FlatStyle = FlatStyle.Flat;
|
||||
buttonSilent.ForeColor = SystemColors.ControlText;
|
||||
buttonSilent.Location = new Point(8, 12);
|
||||
buttonSilent.Margin = new Padding(8, 12, 8, 12);
|
||||
buttonSilent.Name = "buttonSilent";
|
||||
@@ -527,10 +538,13 @@
|
||||
//
|
||||
// buttonUltimate
|
||||
//
|
||||
buttonUltimate.Activated = false;
|
||||
buttonUltimate.BackColor = SystemColors.ControlLightLight;
|
||||
buttonUltimate.BorderColor = Color.Transparent;
|
||||
buttonUltimate.Dock = DockStyle.Fill;
|
||||
buttonUltimate.FlatAppearance.BorderSize = 0;
|
||||
buttonUltimate.FlatStyle = FlatStyle.Flat;
|
||||
buttonUltimate.ForeColor = SystemColors.ControlText;
|
||||
buttonUltimate.Location = new Point(464, 12);
|
||||
buttonUltimate.Margin = new Padding(8, 12, 8, 12);
|
||||
buttonUltimate.Name = "buttonUltimate";
|
||||
@@ -541,10 +555,13 @@
|
||||
//
|
||||
// buttonStandard
|
||||
//
|
||||
buttonStandard.Activated = false;
|
||||
buttonStandard.BackColor = SystemColors.ControlLightLight;
|
||||
buttonStandard.BorderColor = Color.Transparent;
|
||||
buttonStandard.Dock = DockStyle.Fill;
|
||||
buttonStandard.FlatAppearance.BorderSize = 0;
|
||||
buttonStandard.FlatStyle = FlatStyle.Flat;
|
||||
buttonStandard.ForeColor = SystemColors.ControlText;
|
||||
buttonStandard.Location = new Point(236, 12);
|
||||
buttonStandard.Margin = new Padding(8, 12, 8, 12);
|
||||
buttonStandard.Name = "buttonStandard";
|
||||
@@ -555,11 +572,14 @@
|
||||
//
|
||||
// buttonEco
|
||||
//
|
||||
buttonEco.Activated = false;
|
||||
buttonEco.BackColor = SystemColors.ControlLightLight;
|
||||
buttonEco.BorderColor = Color.Transparent;
|
||||
buttonEco.CausesValidation = false;
|
||||
buttonEco.Dock = DockStyle.Fill;
|
||||
buttonEco.FlatAppearance.BorderSize = 0;
|
||||
buttonEco.FlatStyle = FlatStyle.Flat;
|
||||
buttonEco.ForeColor = SystemColors.ControlText;
|
||||
buttonEco.Location = new Point(8, 12);
|
||||
buttonEco.Margin = new Padding(8, 12, 8, 12);
|
||||
buttonEco.Name = "buttonEco";
|
||||
@@ -614,11 +634,13 @@
|
||||
//
|
||||
// button120Hz
|
||||
//
|
||||
button120Hz.Activated = false;
|
||||
button120Hz.BackColor = SystemColors.ControlLightLight;
|
||||
button120Hz.BorderColor = Color.Transparent;
|
||||
button120Hz.Dock = DockStyle.Fill;
|
||||
button120Hz.FlatAppearance.BorderColor = SystemColors.ActiveBorder;
|
||||
button120Hz.FlatAppearance.BorderSize = 0;
|
||||
button120Hz.FlatStyle = FlatStyle.Flat;
|
||||
button120Hz.ForeColor = SystemColors.ControlText;
|
||||
button120Hz.Location = new Point(236, 12);
|
||||
button120Hz.Margin = new Padding(8, 12, 8, 12);
|
||||
button120Hz.Name = "button120Hz";
|
||||
@@ -629,10 +651,11 @@
|
||||
//
|
||||
// button60Hz
|
||||
//
|
||||
button60Hz.Activated = false;
|
||||
button60Hz.BackColor = SystemColors.ControlLightLight;
|
||||
button60Hz.BorderColor = Color.Transparent;
|
||||
button60Hz.CausesValidation = false;
|
||||
button60Hz.Dock = DockStyle.Fill;
|
||||
button60Hz.FlatAppearance.BorderColor = SystemColors.ActiveBorder;
|
||||
button60Hz.FlatAppearance.BorderSize = 0;
|
||||
button60Hz.FlatStyle = FlatStyle.Flat;
|
||||
button60Hz.ForeColor = SystemColors.ControlText;
|
||||
@@ -774,10 +797,10 @@
|
||||
//
|
||||
pictureKeyboard.BackgroundImage = Properties.Resources.icons8_keyboard_48;
|
||||
pictureKeyboard.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureKeyboard.Location = new Point(25, 16);
|
||||
pictureKeyboard.Location = new Point(27, 16);
|
||||
pictureKeyboard.Margin = new Padding(4, 2, 4, 2);
|
||||
pictureKeyboard.Name = "pictureKeyboard";
|
||||
pictureKeyboard.Size = new Size(36, 36);
|
||||
pictureKeyboard.Size = new Size(32, 36);
|
||||
pictureKeyboard.TabIndex = 33;
|
||||
pictureKeyboard.TabStop = false;
|
||||
//
|
||||
@@ -868,23 +891,23 @@
|
||||
private Label labelPerf;
|
||||
private Label labelCPUFan;
|
||||
private TableLayoutPanel tablePerf;
|
||||
private Button buttonTurbo;
|
||||
private Button buttonBalanced;
|
||||
private Button buttonSilent;
|
||||
private RoundedButton buttonTurbo;
|
||||
private RoundedButton buttonBalanced;
|
||||
private RoundedButton buttonSilent;
|
||||
private Panel panelGPU;
|
||||
private CheckBox checkGPU;
|
||||
private PictureBox pictureGPU;
|
||||
private Label labelGPU;
|
||||
private Label labelGPUFan;
|
||||
private TableLayoutPanel tableGPU;
|
||||
private Button buttonUltimate;
|
||||
private Button buttonStandard;
|
||||
private Button buttonEco;
|
||||
private RoundedButton buttonUltimate;
|
||||
private RoundedButton buttonStandard;
|
||||
private RoundedButton buttonEco;
|
||||
private Panel panelScreen;
|
||||
private CheckBox checkScreen;
|
||||
private TableLayoutPanel tableScreen;
|
||||
private Button button120Hz;
|
||||
private Button button60Hz;
|
||||
private RoundedButton button120Hz;
|
||||
private RoundedButton button60Hz;
|
||||
private PictureBox pictureScreen;
|
||||
private Label labelSreen;
|
||||
private Panel panelKeyboard;
|
||||
|
||||
64
Settings.cs
64
Settings.cs
@@ -14,9 +14,6 @@ namespace GHelper
|
||||
static Color colorStandard = Color.FromArgb(255, 58, 174, 239);
|
||||
static Color colorTurbo = Color.FromArgb(255, 255, 32, 32);
|
||||
|
||||
static int buttonInactive = 0;
|
||||
static int buttonActive = 5;
|
||||
|
||||
static System.Timers.Timer aTimer = default!;
|
||||
static System.Timers.Timer matrixTimer = default!;
|
||||
|
||||
@@ -36,13 +33,16 @@ namespace GHelper
|
||||
|
||||
FormClosing += SettingsForm_FormClosing;
|
||||
|
||||
buttonSilent.FlatAppearance.BorderColor = colorEco;
|
||||
buttonBalanced.FlatAppearance.BorderColor = colorStandard;
|
||||
buttonTurbo.FlatAppearance.BorderColor = colorTurbo;
|
||||
buttonSilent.BorderColor = colorEco;
|
||||
buttonBalanced.BorderColor = colorStandard;
|
||||
buttonTurbo.BorderColor = colorTurbo;
|
||||
|
||||
buttonEco.FlatAppearance.BorderColor = colorEco;
|
||||
buttonStandard.FlatAppearance.BorderColor = colorStandard;
|
||||
buttonUltimate.FlatAppearance.BorderColor = colorTurbo;
|
||||
buttonEco.BorderColor = colorEco;
|
||||
buttonStandard.BorderColor = colorStandard;
|
||||
buttonUltimate.BorderColor = colorTurbo;
|
||||
|
||||
button60Hz.BorderColor = SystemColors.ActiveBorder;
|
||||
button120Hz.BorderColor = SystemColors.ActiveBorder;
|
||||
|
||||
buttonSilent.Click += ButtonSilent_Click;
|
||||
buttonBalanced.Click += ButtonBalanced_Click;
|
||||
@@ -599,12 +599,12 @@ namespace GHelper
|
||||
Logger.WriteLine("Screen Overdrive not supported");
|
||||
}
|
||||
|
||||
button60Hz.FlatAppearance.BorderSize = buttonInactive;
|
||||
button120Hz.FlatAppearance.BorderSize = buttonInactive;
|
||||
button60Hz.Activated = false;
|
||||
button120Hz.Activated = false;
|
||||
|
||||
if (frequency == 60)
|
||||
{
|
||||
button60Hz.FlatAppearance.BorderSize = buttonActive;
|
||||
button60Hz.Activated = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -612,7 +612,7 @@ namespace GHelper
|
||||
maxFrequency = frequency;
|
||||
|
||||
Program.config.setConfig("max_frequency", maxFrequency);
|
||||
button120Hz.FlatAppearance.BorderSize = buttonActive;
|
||||
button120Hz.Activated = true;
|
||||
}
|
||||
|
||||
if (maxFrequency > 60)
|
||||
@@ -779,22 +779,23 @@ namespace GHelper
|
||||
public void SetPerformanceMode(int PerformanceMode = ASUSWmi.PerformanceBalanced, bool notify = false)
|
||||
{
|
||||
|
||||
buttonSilent.FlatAppearance.BorderSize = buttonInactive;
|
||||
buttonBalanced.FlatAppearance.BorderSize = buttonInactive;
|
||||
buttonTurbo.FlatAppearance.BorderSize = buttonInactive;
|
||||
|
||||
buttonSilent.Activated = false;
|
||||
buttonBalanced.Activated = false;
|
||||
buttonTurbo.Activated = false;
|
||||
|
||||
switch (PerformanceMode)
|
||||
{
|
||||
case ASUSWmi.PerformanceSilent:
|
||||
buttonSilent.FlatAppearance.BorderSize = buttonActive;
|
||||
buttonSilent.Activated = true;
|
||||
perfName = "Silent";
|
||||
break;
|
||||
case ASUSWmi.PerformanceTurbo:
|
||||
buttonTurbo.FlatAppearance.BorderSize = buttonActive;
|
||||
buttonTurbo.Activated = true;
|
||||
perfName = "Turbo";
|
||||
break;
|
||||
default:
|
||||
buttonBalanced.FlatAppearance.BorderSize = buttonActive;
|
||||
buttonBalanced.Activated = true;
|
||||
PerformanceMode = ASUSWmi.PerformanceBalanced;
|
||||
perfName = "Balanced";
|
||||
break;
|
||||
@@ -940,6 +941,14 @@ namespace GHelper
|
||||
new Thread(() =>
|
||||
{
|
||||
Thread.CurrentThread.IsBackground = true;
|
||||
|
||||
if (eco == 1)
|
||||
{
|
||||
string[] tokill = { "EADesktop" };
|
||||
foreach (string kill in tokill)
|
||||
foreach (var process in Process.GetProcessesByName(kill)) process.Kill();
|
||||
}
|
||||
|
||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco);
|
||||
Program.settingsForm.BeginInvoke(delegate
|
||||
{
|
||||
@@ -948,7 +957,10 @@ namespace GHelper
|
||||
Thread.Sleep(500);
|
||||
AutoScreen(SystemInformation.PowerStatus.PowerLineStatus);
|
||||
});
|
||||
}).Start();
|
||||
})
|
||||
{
|
||||
|
||||
}.Start();
|
||||
|
||||
}
|
||||
|
||||
@@ -1031,24 +1043,24 @@ namespace GHelper
|
||||
GPUMode = Program.config.getConfig("gpu_mode");
|
||||
}
|
||||
|
||||
buttonEco.FlatAppearance.BorderSize = buttonInactive;
|
||||
buttonStandard.FlatAppearance.BorderSize = buttonInactive;
|
||||
buttonUltimate.FlatAppearance.BorderSize = buttonInactive;
|
||||
buttonEco.Activated = false;
|
||||
buttonStandard.Activated = false;
|
||||
buttonUltimate.Activated = false;
|
||||
|
||||
switch (GPUMode)
|
||||
{
|
||||
case ASUSWmi.GPUModeEco:
|
||||
buttonEco.FlatAppearance.BorderSize = buttonActive;
|
||||
buttonEco.Activated = true;
|
||||
labelGPU.Text = "GPU Mode: iGPU only";
|
||||
Program.trayIcon.Icon = GHelper.Properties.Resources.eco;
|
||||
break;
|
||||
case ASUSWmi.GPUModeUltimate:
|
||||
buttonUltimate.FlatAppearance.BorderSize = buttonActive;
|
||||
buttonUltimate.Activated = true;
|
||||
labelGPU.Text = "GPU Mode: dGPU exclusive";
|
||||
Program.trayIcon.Icon = GHelper.Properties.Resources.ultimate;
|
||||
break;
|
||||
default:
|
||||
buttonStandard.FlatAppearance.BorderSize = buttonActive;
|
||||
buttonStandard.Activated = true;
|
||||
labelGPU.Text = "GPU Mode: iGPU + dGPU";
|
||||
Program.trayIcon.Icon = GHelper.Properties.Resources.standard;
|
||||
break;
|
||||
|
||||
2
_config.yml
Normal file
2
_config.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
plugins:
|
||||
- jemoji
|
||||
@@ -5,6 +5,7 @@ sc STOP ASUSSoftwareManager
|
||||
sc STOP ASUSSwitch
|
||||
sc STOP ASUSSystemAnalysis
|
||||
sc STOP ASUSSystemDiagnosis
|
||||
sc STOP ArmouryCrateControlInterface
|
||||
|
||||
sc DELETE AsusAppService
|
||||
sc DELETE ASUSLinkNear
|
||||
@@ -13,3 +14,4 @@ sc DELETE ASUSSoftwareManager
|
||||
sc DELETE ASUSSwitch
|
||||
sc DELETE ASUSSystemAnalysis
|
||||
sc DELETE ASUSSystemDiagnosis
|
||||
sc DELETE ArmouryCrateControlInterface
|
||||
|
||||
Reference in New Issue
Block a user