From 482983d3f4603a51c628180a6a8149d9e5cc8670 Mon Sep 17 00:00:00 2001 From: apurvamarya Date: Sun, 7 Jun 2026 16:04:06 +0530 Subject: [PATCH 1/4] Upgraded for newer versions --- AsusFanControlGUI/AsusFanControlGUI.csproj | 115 ++------------------- AsusFanControlGUI/Form1.cs | 28 ++--- 2 files changed, 22 insertions(+), 121 deletions(-) diff --git a/AsusFanControlGUI/AsusFanControlGUI.csproj b/AsusFanControlGUI/AsusFanControlGUI.csproj index d1527a6..2b62d8e 100644 --- a/AsusFanControlGUI/AsusFanControlGUI.csproj +++ b/AsusFanControlGUI/AsusFanControlGUI.csproj @@ -1,116 +1,17 @@ - - - + - 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 - - - - + - \ No newline at end of file diff --git a/AsusFanControlGUI/Form1.cs b/AsusFanControlGUI/Form1.cs index 1678305..861ef87 100644 --- a/AsusFanControlGUI/Form1.cs +++ b/AsusFanControlGUI/Form1.cs @@ -40,24 +40,24 @@ private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if(trayIcon == null) { + var contextMenu = new ContextMenuStrip(); + contextMenu.Items.Add("Show", null, (s1, e1) => + { + trayIcon.Visible = false; + Show(); + }); + contextMenu.Items.Add("Exit", null, (s1, e1) => + { + Close(); + trayIcon.Visible = false; + Application.Exit(); + }); + 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) From 09c73c394d256fffd6242ac827a8ecd15a6fd8a5 Mon Sep 17 00:00:00 2001 From: apurvamarya Date: Mon, 8 Jun 2026 09:12:31 +0530 Subject: [PATCH 2/4] Changed the UI to Dark Neon theme --- AsusFanControlGUI/AsusFanControlGUI.csproj | 3 + AsusFanControlGUI/Form1.Designer.cs | 92 ++++++++-- AsusFanControlGUI/Form1.cs | 143 ++++++++++++--- AsusFanControlGUI/Form1.resx | 200 --------------------- 4 files changed, 202 insertions(+), 236 deletions(-) delete mode 100644 AsusFanControlGUI/Form1.resx diff --git a/AsusFanControlGUI/AsusFanControlGUI.csproj b/AsusFanControlGUI/AsusFanControlGUI.csproj index 2b62d8e..53ef7d2 100644 --- a/AsusFanControlGUI/AsusFanControlGUI.csproj +++ b/AsusFanControlGUI/AsusFanControlGUI.csproj @@ -13,5 +13,8 @@ + + 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 861ef87..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,21 +137,27 @@ 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.Items.Add("Show", null, (s1, e1) => - { - trayIcon.Visible = false; - Show(); - }); - contextMenu.Items.Add("Exit", null, (s1, e1) => - { - Close(); - trayIcon.Visible = false; - Application.Exit(); - }); - + 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, @@ -62,7 +167,6 @@ private void Form1_FormClosing(object sender, FormClosingEventArgs e) { 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 From 8337888b851a666f9cffb19087daecaad2f9a5f5 Mon Sep 17 00:00:00 2001 From: apurvamarya Date: Thu, 11 Jun 2026 10:58:42 +0530 Subject: [PATCH 3/4] Added the ui in assets --- assets/Ui.png | Bin 0 -> 21857 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/Ui.png diff --git a/assets/Ui.png b/assets/Ui.png new file mode 100644 index 0000000000000000000000000000000000000000..5033a3a5dc294f5594ca557617e49cf19005e036 GIT binary patch literal 21857 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 aZ&`0Fi|e->(*=k{<*+_#XHjGBj{hGvy5J}P literal 0 HcmV?d00001 From 7fc999543ad870d62871481115e5ab796d5f2a5b Mon Sep 17 00:00:00 2001 From: apurvamarya Date: Thu, 11 Jun 2026 11:04:15 +0530 Subject: [PATCH 4/4] Updated readme.md --- README.md | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) 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