diff --git a/AsusFanControlGUI/AsusFanControlGUI.csproj b/AsusFanControlGUI/AsusFanControlGUI.csproj index d1527a6..53ef7d2 100644 --- a/AsusFanControlGUI/AsusFanControlGUI.csproj +++ b/AsusFanControlGUI/AsusFanControlGUI.csproj @@ -1,116 +1,20 @@ - - - + - Debug - AnyCPU - {42CC78B6-E3BB-4092-A423-A4EC20FB3C11} WinExe + net10.0-windows AsusFanControlGUI AsusFanControlGUI - v4.7.2 - 512 - true - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - true - ..\bin\x64\Debug\ - DEBUG;TRACE - full - x64 - 7.3 - prompt - true - - - ..\bin\x64\Release\ - TRACE - true - pdbonly - x64 - 7.3 - prompt - true - - + true propeller.ico + enable + x64 + ..\bin\x64\Debug\ + false - - - - - - - - - - - - - - - Form - - - Form1.cs - - - - - Form1.cs - Designer - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - {df94635e-4107-4ee9-8675-7137e750bc86} - AsusFanControl - - - - + + + PreserveNewest + - \ No newline at end of file diff --git a/AsusFanControlGUI/Form1.Designer.cs b/AsusFanControlGUI/Form1.Designer.cs index e1b5de3..4c2a3d5 100644 --- a/AsusFanControlGUI/Form1.Designer.cs +++ b/AsusFanControlGUI/Form1.Designer.cs @@ -49,6 +49,15 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.trackBarFanSpeed)).BeginInit(); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); + + // ── Neon palette ────────────────────────────────────────────── + var clrBack = System.Drawing.Color.Black; + var clrNeon = System.Drawing.Color.FromArgb(0, 255, 255); // cyan + var clrDim = System.Drawing.Color.FromArgb(0, 160, 160); // muted cyan + var clrMenuBg = System.Drawing.Color.FromArgb(10, 10, 10); + var fntMain = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular); + var fntValue = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Bold); + // // trackBarFanSpeed // @@ -58,6 +67,8 @@ private void InitializeComponent() this.trackBarFanSpeed.Size = new System.Drawing.Size(300, 45); this.trackBarFanSpeed.TabIndex = 0; this.trackBarFanSpeed.Value = 100; + this.trackBarFanSpeed.BackColor = clrBack; + this.trackBarFanSpeed.ForeColor = clrNeon; this.trackBarFanSpeed.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trackBarFanSpeed_KeyUp); this.trackBarFanSpeed.MouseCaptureChanged += new System.EventHandler(this.trackBarFanSpeed_MouseCaptureChanged); // @@ -68,16 +79,22 @@ private void InitializeComponent() this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(73, 13); this.label1.TabIndex = 1; - this.label1.Text = "Current value:"; + this.label1.Text = "Fan speed:"; + this.label1.ForeColor = clrDim; + this.label1.BackColor = clrBack; + this.label1.Font = fntMain; // // labelValue // this.labelValue.AutoSize = true; - this.labelValue.Location = new System.Drawing.Point(91, 110); + this.labelValue.Location = new System.Drawing.Point(100, 110); this.labelValue.Name = "labelValue"; this.labelValue.Size = new System.Drawing.Size(10, 13); this.labelValue.TabIndex = 2; this.labelValue.Text = "-"; + this.labelValue.ForeColor = clrNeon; + this.labelValue.BackColor = clrBack; + this.labelValue.Font = fntValue; // // label2 // @@ -86,7 +103,10 @@ private void InitializeComponent() this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(71, 13); this.label2.TabIndex = 3; - this.label2.Text = "Current RPM:"; + this.label2.Text = "Fan RPM:"; + this.label2.ForeColor = clrDim; + this.label2.BackColor = clrBack; + this.label2.Font = fntMain; // // buttonRefreshRPM // @@ -95,7 +115,14 @@ private void InitializeComponent() this.buttonRefreshRPM.Size = new System.Drawing.Size(22, 23); this.buttonRefreshRPM.TabIndex = 4; this.buttonRefreshRPM.Text = "↻"; - this.buttonRefreshRPM.UseVisualStyleBackColor = true; + this.buttonRefreshRPM.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonRefreshRPM.FlatAppearance.BorderColor = clrNeon; + this.buttonRefreshRPM.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(0, 40, 40); + this.buttonRefreshRPM.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(0, 80, 80); + this.buttonRefreshRPM.BackColor = clrBack; + this.buttonRefreshRPM.ForeColor = clrNeon; + this.buttonRefreshRPM.Font = fntMain; + this.buttonRefreshRPM.UseVisualStyleBackColor = false; this.buttonRefreshRPM.Click += new System.EventHandler(this.buttonRefreshRPM_Click); // // labelRPM @@ -106,6 +133,9 @@ private void InitializeComponent() this.labelRPM.Size = new System.Drawing.Size(10, 13); this.labelRPM.TabIndex = 5; this.labelRPM.Text = "-"; + this.labelRPM.ForeColor = clrNeon; + this.labelRPM.BackColor = clrBack; + this.labelRPM.Font = fntValue; // // checkBoxTurnOn // @@ -115,17 +145,23 @@ private void InitializeComponent() this.checkBoxTurnOn.Size = new System.Drawing.Size(116, 17); this.checkBoxTurnOn.TabIndex = 6; this.checkBoxTurnOn.Text = "Turn on fan control"; - this.checkBoxTurnOn.UseVisualStyleBackColor = true; + this.checkBoxTurnOn.ForeColor = clrNeon; + this.checkBoxTurnOn.BackColor = clrBack; + this.checkBoxTurnOn.Font = fntMain; + this.checkBoxTurnOn.UseVisualStyleBackColor = false; this.checkBoxTurnOn.CheckedChanged += new System.EventHandler(this.checkBoxTurnOn_CheckedChanged); // // labelCPUTemp // this.labelCPUTemp.AutoSize = true; - this.labelCPUTemp.Location = new System.Drawing.Point(141, 168); + this.labelCPUTemp.Location = new System.Drawing.Point(160, 168); this.labelCPUTemp.Name = "labelCPUTemp"; this.labelCPUTemp.Size = new System.Drawing.Size(10, 13); this.labelCPUTemp.TabIndex = 9; this.labelCPUTemp.Text = "-"; + this.labelCPUTemp.ForeColor = clrNeon; + this.labelCPUTemp.BackColor = clrBack; + this.labelCPUTemp.Font = fntValue; // // buttonRefreshCPUTemp // @@ -134,7 +170,14 @@ private void InitializeComponent() this.buttonRefreshCPUTemp.Size = new System.Drawing.Size(22, 23); this.buttonRefreshCPUTemp.TabIndex = 8; this.buttonRefreshCPUTemp.Text = "↻"; - this.buttonRefreshCPUTemp.UseVisualStyleBackColor = true; + this.buttonRefreshCPUTemp.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonRefreshCPUTemp.FlatAppearance.BorderColor = clrNeon; + this.buttonRefreshCPUTemp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(0, 40, 40); + this.buttonRefreshCPUTemp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(0, 80, 80); + this.buttonRefreshCPUTemp.BackColor = clrBack; + this.buttonRefreshCPUTemp.ForeColor = clrNeon; + this.buttonRefreshCPUTemp.Font = fntMain; + this.buttonRefreshCPUTemp.UseVisualStyleBackColor = false; this.buttonRefreshCPUTemp.Click += new System.EventHandler(this.buttonRefreshCPUTemp_Click); // // label4 @@ -144,10 +187,16 @@ private void InitializeComponent() this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(95, 13); this.label4.TabIndex = 7; - this.label4.Text = "Current CPU temp:"; + this.label4.Text = "CPU temp:"; + this.label4.ForeColor = clrDim; + this.label4.BackColor = clrBack; + this.label4.Font = fntMain; // // menuStrip1 // + this.menuStrip1.BackColor = clrMenuBg; + this.menuStrip1.ForeColor = clrNeon; + this.menuStrip1.Font = fntMain; this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripMenuItem1, this.toolStripMenuItemCheckForUpdates}); @@ -159,14 +208,15 @@ private void InitializeComponent() // // toolStripMenuItem1 // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(72, 20); + this.toolStripMenuItem1.Text = "Advanced"; + this.toolStripMenuItem1.ForeColor = clrNeon; this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripMenuItemTurnOffControlOnExit, this.toolStripMenuItemForbidUnsafeSettings, this.toolStripMenuItemMinimizeToTrayOnClose, this.toolStripMenuItemAutoRefreshStats}); - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(72, 20); - this.toolStripMenuItem1.Text = "Advanced"; // // toolStripMenuItemTurnOffControlOnExit // @@ -174,6 +224,8 @@ private void InitializeComponent() this.toolStripMenuItemTurnOffControlOnExit.Name = "toolStripMenuItemTurnOffControlOnExit"; this.toolStripMenuItemTurnOffControlOnExit.Size = new System.Drawing.Size(207, 22); this.toolStripMenuItemTurnOffControlOnExit.Text = "Turn off control on exit"; + this.toolStripMenuItemTurnOffControlOnExit.ForeColor = clrNeon; + this.toolStripMenuItemTurnOffControlOnExit.BackColor = clrMenuBg; this.toolStripMenuItemTurnOffControlOnExit.CheckedChanged += new System.EventHandler(this.toolStripMenuItemTurnOffControlOnExit_CheckedChanged); // // toolStripMenuItemForbidUnsafeSettings @@ -182,6 +234,8 @@ private void InitializeComponent() this.toolStripMenuItemForbidUnsafeSettings.Name = "toolStripMenuItemForbidUnsafeSettings"; this.toolStripMenuItemForbidUnsafeSettings.Size = new System.Drawing.Size(207, 22); this.toolStripMenuItemForbidUnsafeSettings.Text = "Forbid unsafe settings"; + this.toolStripMenuItemForbidUnsafeSettings.ForeColor = clrNeon; + this.toolStripMenuItemForbidUnsafeSettings.BackColor = clrMenuBg; this.toolStripMenuItemForbidUnsafeSettings.CheckedChanged += new System.EventHandler(this.toolStripMenuItemForbidUnsafeSettings_CheckedChanged); // // toolStripMenuItemMinimizeToTrayOnClose @@ -190,6 +244,8 @@ private void InitializeComponent() this.toolStripMenuItemMinimizeToTrayOnClose.Name = "toolStripMenuItemMinimizeToTrayOnClose"; this.toolStripMenuItemMinimizeToTrayOnClose.Size = new System.Drawing.Size(207, 22); this.toolStripMenuItemMinimizeToTrayOnClose.Text = "Minimize to tray on close"; + this.toolStripMenuItemMinimizeToTrayOnClose.ForeColor = clrNeon; + this.toolStripMenuItemMinimizeToTrayOnClose.BackColor = clrMenuBg; this.toolStripMenuItemMinimizeToTrayOnClose.Click += new System.EventHandler(this.toolStripMenuItemMinimizeToTrayOnClose_Click); // // toolStripMenuItemAutoRefreshStats @@ -198,6 +254,8 @@ private void InitializeComponent() this.toolStripMenuItemAutoRefreshStats.Name = "toolStripMenuItemAutoRefreshStats"; this.toolStripMenuItemAutoRefreshStats.Size = new System.Drawing.Size(207, 22); this.toolStripMenuItemAutoRefreshStats.Text = "Auto refresh stats"; + this.toolStripMenuItemAutoRefreshStats.ForeColor = clrNeon; + this.toolStripMenuItemAutoRefreshStats.BackColor = clrMenuBg; this.toolStripMenuItemAutoRefreshStats.Click += new System.EventHandler(this.toolStripMenuItemAutoRefreshStats_Click); // // toolStripMenuItemCheckForUpdates @@ -205,6 +263,7 @@ private void InitializeComponent() this.toolStripMenuItemCheckForUpdates.Name = "toolStripMenuItemCheckForUpdates"; this.toolStripMenuItemCheckForUpdates.Size = new System.Drawing.Size(115, 20); this.toolStripMenuItemCheckForUpdates.Text = "Check for updates"; + this.toolStripMenuItemCheckForUpdates.ForeColor = clrNeon; this.toolStripMenuItemCheckForUpdates.Click += new System.EventHandler(this.toolStripMenuItemCheckForUpdates_Click); // // Form1 @@ -212,6 +271,9 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(324, 198); + this.BackColor = clrBack; + this.ForeColor = clrNeon; + this.Font = fntMain; this.Controls.Add(this.labelCPUTemp); this.Controls.Add(this.buttonRefreshCPUTemp); this.Controls.Add(this.label4); @@ -223,7 +285,9 @@ private void InitializeComponent() this.Controls.Add(this.label1); this.Controls.Add(this.trackBarFanSpeed); this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Icon = new System.Drawing.Icon( + System.IO.Path.Combine( + System.AppContext.BaseDirectory, "propeller.ico")); this.MainMenuStrip = this.menuStrip1; this.Name = "Form1"; this.Text = "Asus Fan Control"; @@ -234,7 +298,6 @@ private void InitializeComponent() this.menuStrip1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); - } #endregion @@ -257,5 +320,4 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemMinimizeToTrayOnClose; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemAutoRefreshStats; } -} - +} \ No newline at end of file diff --git a/AsusFanControlGUI/Form1.cs b/AsusFanControlGUI/Form1.cs index 1678305..ae7d538 100644 --- a/AsusFanControlGUI/Form1.cs +++ b/AsusFanControlGUI/Form1.cs @@ -1,11 +1,109 @@ using AsusFanControl; using System; +using System.Drawing; using System.Windows.Forms; namespace AsusFanControlGUI { + // ── Custom renderer: black background, cyan text/highlight for MenuStrip ── + internal class NeonMenuRenderer : ToolStripProfessionalRenderer + { + static readonly Color clrBack = Color.FromArgb(10, 10, 10); + static readonly Color clrNeon = Color.FromArgb(0, 255, 255); + static readonly Color clrHover = Color.FromArgb(0, 40, 40); + static readonly Color clrBorder = Color.FromArgb(0, 120, 120); + + public NeonMenuRenderer() : base(new NeonColorTable()) { } + + protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) + { + var g = e.Graphics; + var rect = new Rectangle(Point.Empty, e.Item.Size); + var bg = e.Item.Selected ? clrHover : clrBack; + using var brush = new SolidBrush(bg); + g.FillRectangle(brush, rect); + if (e.Item.Selected) + { + using var pen = new Pen(clrBorder); + g.DrawRectangle(pen, 0, 0, rect.Width - 1, rect.Height - 1); + } + } + + protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e) + { + using var brush = new SolidBrush(clrBack); + e.Graphics.FillRectangle(brush, e.AffectedBounds); + } + + protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) + { + using var pen = new Pen(clrBorder); + var r = e.AffectedBounds; + e.Graphics.DrawRectangle(pen, r.X, r.Y, r.Width - 1, r.Height - 1); + } + + protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) + { + e.TextColor = clrNeon; + base.OnRenderItemText(e); + } + + protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e) + { + e.ArrowColor = clrNeon; + base.OnRenderArrow(e); + } + + protected override void OnRenderItemImage(ToolStripItemImageRenderEventArgs e) + { + // Draw a neon ✓ for checked menu items instead of the default glyph + if (e.Item is ToolStripMenuItem mi && mi.Checked) + { + var g = e.Graphics; + var r = e.ImageRectangle; + using var pen = new Pen(clrNeon, 2f); + g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + g.DrawLines(pen, new Point[] + { + new Point(r.Left + 2, r.Top + r.Height / 2), + new Point(r.Left + r.Width / 3, r.Bottom - 3), + new Point(r.Right - 2, r.Top + 2) + }); + return; + } + base.OnRenderItemImage(e); + } + } + + internal class NeonColorTable : ProfessionalColorTable + { + static readonly Color clrBack = Color.FromArgb(10, 10, 10); + static readonly Color clrBorder = Color.FromArgb(0, 120, 120); + + public override Color MenuStripGradientBegin => clrBack; + public override Color MenuStripGradientEnd => clrBack; + public override Color MenuBorder => clrBorder; + public override Color MenuItemBorder => clrBorder; + public override Color MenuItemSelected => Color.FromArgb(0, 40, 40); + public override Color MenuItemSelectedGradientBegin => Color.FromArgb(0, 40, 40); + public override Color MenuItemSelectedGradientEnd => Color.FromArgb(0, 40, 40); + public override Color MenuItemPressedGradientBegin => Color.FromArgb(0, 60, 60); + public override Color MenuItemPressedGradientEnd => Color.FromArgb(0, 60, 60); + public override Color ToolStripDropDownBackground => clrBack; + public override Color ImageMarginGradientBegin => clrBack; + public override Color ImageMarginGradientMiddle => clrBack; + public override Color ImageMarginGradientEnd => clrBack; + public override Color SeparatorDark => clrBorder; + public override Color SeparatorLight => clrBorder; + } + + // ── Main form ───────────────────────────────────────────────────────────── public partial class Form1 : Form { + static readonly Color clrBack = Color.Black; + static readonly Color clrNeon = Color.FromArgb(0, 255, 255); + static readonly Color clrMenuBg = Color.FromArgb(10, 10, 10); + AsusControl asusControl = new AsusControl(); int fanSpeed = 0; Timer timer; @@ -14,6 +112,7 @@ public partial class Form1 : Form public Form1() { InitializeComponent(); + menuStrip1.Renderer = new NeonMenuRenderer(); AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit); toolStripMenuItemTurnOffControlOnExit.Checked = Properties.Settings.Default.turnOffControlOnExit; @@ -38,31 +137,36 @@ private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (Properties.Settings.Default.minimizeToTrayOnClose && Visible) { - if(trayIcon == null) + if (trayIcon == null) { + var contextMenu = new ContextMenuStrip(); + contextMenu.BackColor = clrMenuBg; + contextMenu.ForeColor = clrNeon; + contextMenu.Renderer = new NeonMenuRenderer(); + contextMenu.Font = new Font("Consolas", 9F); + + var itemShow = new ToolStripMenuItem("Show"); + itemShow.ForeColor = clrNeon; + itemShow.BackColor = clrMenuBg; + itemShow.Click += (s1, e1) => { trayIcon.Visible = false; Show(); }; + + var itemExit = new ToolStripMenuItem("Exit"); + itemExit.ForeColor = clrNeon; + itemExit.BackColor = clrMenuBg; + itemExit.Click += (s1, e1) => { Close(); trayIcon.Visible = false; Application.Exit(); }; + + contextMenu.Items.Add(itemShow); + contextMenu.Items.Add(itemExit); + trayIcon = new NotifyIcon() { Icon = Icon, - ContextMenu = new ContextMenu(new MenuItem[] { - new MenuItem("Show", (s1, e1) => - { - trayIcon.Visible = false; - Show(); - }), - new MenuItem("Exit", (s1, e1) => - { - Close(); - trayIcon.Visible = false; - Application.Exit(); - }), - }), + ContextMenuStrip = contextMenu, }; - trayIcon.MouseClick += (s1, e1) => { if (e1.Button != MouseButtons.Left) return; - trayIcon.Visible = false; Show(); }; @@ -119,7 +223,6 @@ private void toolStripMenuItemAutoRefreshStats_Click(object sender, EventArgs e) { Properties.Settings.Default.autoRefreshStats = toolStripMenuItemAutoRefreshStats.Checked; Properties.Settings.Default.Save(); - timerRefreshStats(); } @@ -138,15 +241,14 @@ private void setFanSpeed() value = 0; if (value == 0) - labelValue.Text = "turned off"; + labelValue.Text = "OFF"; else - labelValue.Text = value.ToString(); + labelValue.Text = value.ToString() + "%"; if (fanSpeed == value) return; fanSpeed = value; - asusControl.SetFanSpeeds(value); } @@ -183,8 +285,7 @@ private void buttonRefreshRPM_Click(object sender, EventArgs e) private void buttonRefreshCPUTemp_Click(object sender, EventArgs e) { - labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}"; + labelCPUTemp.Text = $"{asusControl.Thermal_Read_Cpu_Temperature()}°C"; } - } -} +} \ No newline at end of file diff --git a/AsusFanControlGUI/Form1.resx b/AsusFanControlGUI/Form1.resx deleted file mode 100644 index 077f79e..0000000 --- a/AsusFanControlGUI/Form1.resx +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - - - AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABMAAAAUAAAABQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAUAAAAEwAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADkAAACfAAAA0gAA - ANMAAACkAAAAQQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABBAAAApAAA - ANIAAADRAAAAnwAAADgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABZAAAA5QAA - AP8AAAD/AAAA/wAAAP8AAADrAAAAdgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAdgAA - AOsAAAD/AAAA/wAAAP8AAAD/AAAA5QAAAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAA - AOUAAAD/AAAA+AAAAMYAAADDAAAA9gAAAP8AAAD5AAAAkQAAAA4AAAAAAAAAAAAAAAAAAAAAAAAADgAA - AJEAAAD5AAAA/wAAAPYAAADDAAAAxwAAAPkAAAD/AAAA5QAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - ABEAAAC7AAAA/wAAAPkAAACCAAAADwAAAA0AAABoAAAA5gAAAP8AAAD8AAAAkQAAAAsAAAAAAAAAAAAA - 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 - AMcAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAJUAAADeAAAA9gAAAP0AAAD9AAAA9wAA - AN8AAACVAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACAAAABDAAAAVgAA - AFcAAABDAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA///////////8P/w/8A/wD+AH4A/gA8AHwAGAA8GAAYOD4AfBg/APwYPg - B8GB4AeBwAAAA8ABgAPgA8AH+APAH/+AAf//4Af//+AH///AA///wAP//8PD//+Dwf//g8H//4PB//+D - wf//gAH//8AD///gB///8A////////////8= - - - \ No newline at end of file diff --git a/README.md b/README.md index c132c78..188c34f 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ Go to [releases](../../releases) ### Run
- Command line: `AsusFanControl.exe` - + Command line: AsusFanControl.exe + AsusFanControl.exe --get-fan-speeds --set-fan-speeds=0-100 (percent value, 0 for turning off test mode) @@ -17,19 +17,32 @@ Go to [releases](../../releases) --get-cpu-temp
-GUI: `AsusFanControlGUI.exe` +GUI: `AsusFanControlGUI.exe` -![AsusFanControlGUI](https://github.com/Karmel0x/AsusFanControl/assets/25367564/fe197ad0-7079-4d51-ae78-177cb6369e96) +![AsusFanControlGUI](https://raw.githubusercontent.com/apurvamarya/AsusFanControl/8337888b851a666f9cffb19087daecaad2f9a5f5/assets/Ui.png) ### Why need it? My laptop does not support the [Fan Profile](https://github.com/Karmel0x/AsusFanControl/assets/25367564/924d990a-bf20-4b8d-bf9d-56c460174d99) option, but it often overheats. Looked for apps to control fans, but none is working. ### Compatibility -This program should work on any laptop with x64 windows where [Fan Diagnosis](https://github.com/Karmel0x/AsusFanControl/assets/25367564/7129833b-97af-4da8-9148-b71e49552ea4) in [MyASUS](https://apps.microsoft.com/store/detail/myasus/9N7R5S6B0ZZH) application is working as it is using same library. +This program should work on any laptop with x64 Windows where [Fan Diagnosis](https://github.com/Karmel0x/AsusFanControl/assets/25367564/7129833b-97af-4da8-9148-b71e49552ea4) in [MyASUS](https://apps.microsoft.com/store/detail/myasus/9N7R5S6B0ZZH) application is working, as it uses the same library. -[ASUS System Control Interface](https://www.asus.com/support/faq/1047338/) is necessary for this software to work - `ASUS System Analysis` service [must be running](../../issues/16). It's automatically installed with `MyASUS` app. +[ASUS System Control Interface](https://www.asus.com/support/faq/1047338/) is necessary for this software to work — `ASUS System Analysis` service [must be running](../../issues/16). It is automatically installed with the `MyASUS` app. Included `AsusWinIO64.dll` is licenced to `(c) ASUSTek COMPUTER INC.` which can be found in `C:\Windows\System32\DriverStore\FileRepository\asussci2.inf_amd64_-\ASUSSystemAnalysis\` if you have MyASUS installed. -[Works on](../../issues/13): +[Works on](../../issues/13): - ASUS: VivoBook, ZenBook, TUF Gaming, ROG Strix, ROG Zephyrus, ROG Flow + +--- + +### Fork & Enhancements by [Apurvam Arya](https://github.com/apurvamarya) + +This fork migrates the project to **.NET 10** (SDK-style project format) and introduces a redesigned GUI with a **neon/cyberpunk dark theme**: + +- Migrated from .NET Framework 4.7.2 to `net10.0-windows` with SDK-style csproj +- Fully redesigned UI with a black & cyan neon color scheme +- Custom `NeonMenuRenderer` for styled `MenuStrip` and context menus — hover highlights, neon checkmarks, and bordered dropdowns +- All controls (trackbar, buttons, labels, checkboxes) re-skinned with `Consolas` font and neon palette +- Tray icon context menu inherits the neon theme +- Codebase modernized with C# nullable reference types enabled \ No newline at end of file diff --git a/assets/Ui.png b/assets/Ui.png new file mode 100644 index 0000000..5033a3a Binary files /dev/null and b/assets/Ui.png differ