├── .gitattributes ├── .gitignore ├── .gitmodules ├── ISSUE_TEMPLATE.md ├── LICENSE.md ├── README.md ├── SidebarDiagnostics.sln ├── SidebarDiagnostics ├── App.config ├── App.xaml ├── App.xaml.cs ├── ChangeLog.json ├── ChangeLog.xaml ├── ChangeLog.xaml.cs ├── ChangeLogModel.cs ├── Commands.cs ├── Constants.cs ├── Converters.cs ├── Dummy.xaml ├── Dummy.xaml.cs ├── FlatStyle.xaml ├── FlatStyle.xaml.cs ├── Graph.xaml ├── Graph.xaml.cs ├── GraphModel.cs ├── Monitoring.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.ar.Designer.cs │ ├── Resources.ar.resx │ ├── Resources.da.Designer.cs │ ├── Resources.da.resx │ ├── Resources.de-CH.Designer.cs │ ├── Resources.de-CH.resx │ ├── Resources.de.Designer.cs │ ├── Resources.de.resx │ ├── Resources.es.Designer.cs │ ├── Resources.es.resx │ ├── Resources.fi.Designer.cs │ ├── Resources.fi.resx │ ├── Resources.fr.Designer.cs │ ├── Resources.fr.resx │ ├── Resources.it.Designer.cs │ ├── Resources.it.resx │ ├── Resources.ja.Designer.cs │ ├── Resources.ja.resx │ ├── Resources.nl.Designer.cs │ ├── Resources.nl.resx │ ├── Resources.resx │ ├── Resources.ru.Designer.cs │ ├── Resources.ru.resx │ ├── Resources.tr.resx │ ├── Resources.zh.Designer.cs │ ├── Resources.zh.resx │ └── app.manifest ├── Settings.cs ├── Settings.ico ├── Settings.xaml ├── Settings.xaml.cs ├── SettingsModel.cs ├── Setup.xaml ├── Setup.xaml.cs ├── Sidebar.ico ├── Sidebar.xaml ├── Sidebar.xaml.cs ├── SidebarDiagnostics.csproj ├── SidebarModel.cs ├── Update.xaml ├── Update.xaml.cs ├── UpdateModel.cs ├── Utilities.cs ├── Windows.cs └── packages.config ├── resharper.svg └── sidebar.ico /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | build/ 21 | bld/ 22 | [Bb]in/ 23 | [Oo]bj/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | 28 | # MSTest test Results 29 | [Tt]est[Rr]esult*/ 30 | [Bb]uild[Ll]og.* 31 | 32 | # NUNIT 33 | *.VisualState.xml 34 | TestResult.xml 35 | 36 | # Build Results of an ATL Project 37 | [Dd]ebugPS/ 38 | [Rr]eleasePS/ 39 | dlldata.c 40 | 41 | # DNX 42 | project.lock.json 43 | artifacts/ 44 | 45 | *_i.c 46 | *_p.c 47 | *_i.h 48 | *.ilk 49 | *.meta 50 | *.obj 51 | *.pch 52 | *.pdb 53 | *.pgc 54 | *.pgd 55 | *.rsp 56 | *.sbr 57 | *.tlb 58 | *.tli 59 | *.tlh 60 | *.tmp 61 | *.tmp_proj 62 | *.log 63 | *.vspscc 64 | *.vssscc 65 | .builds 66 | *.pidb 67 | *.svclog 68 | *.scc 69 | 70 | # Chutzpah Test files 71 | _Chutzpah* 72 | 73 | # Visual C++ cache files 74 | ipch/ 75 | *.aps 76 | *.ncb 77 | *.opensdf 78 | *.sdf 79 | *.cachefile 80 | 81 | # Visual Studio profiler 82 | *.psess 83 | *.vsp 84 | *.vspx 85 | 86 | # TFS 2012 Local Workspace 87 | $tf/ 88 | 89 | # Guidance Automation Toolkit 90 | *.gpState 91 | 92 | # ReSharper is a .NET coding add-in 93 | _ReSharper*/ 94 | *.[Rr]e[Ss]harper 95 | *.DotSettings.user 96 | 97 | # JustCode is a .NET coding add-in 98 | .JustCode 99 | 100 | # TeamCity is a build add-in 101 | _TeamCity* 102 | 103 | # DotCover is a Code Coverage Tool 104 | *.dotCover 105 | 106 | # NCrunch 107 | _NCrunch_* 108 | .*crunch*.local.xml 109 | 110 | # MightyMoose 111 | *.mm.* 112 | AutoTest.Net/ 113 | 114 | # Web workbench (sass) 115 | .sass-cache/ 116 | 117 | # Installshield output folder 118 | [Ee]xpress/ 119 | 120 | # DocProject is a documentation generator add-in 121 | DocProject/buildhelp/ 122 | DocProject/Help/*.HxT 123 | DocProject/Help/*.HxC 124 | DocProject/Help/*.hhc 125 | DocProject/Help/*.hhk 126 | DocProject/Help/*.hhp 127 | DocProject/Help/Html2 128 | DocProject/Help/html 129 | 130 | # Click-Once directory 131 | publish/ 132 | 133 | # Publish Web Output 134 | *.[Pp]ublish.xml 135 | *.azurePubxml 136 | ## TODO: Comment the next line if you want to checkin your 137 | ## web deploy settings but do note that will include unencrypted 138 | ## passwords 139 | #*.pubxml 140 | 141 | *.publishproj 142 | 143 | # NuGet Packages 144 | *.nupkg 145 | # The packages folder can be ignored because of Package Restore 146 | **/packages/* 147 | # except build/, which is used as an MSBuild target. 148 | !**/packages/build/ 149 | # Uncomment if necessary however generally it will be regenerated when needed 150 | #!**/packages/repositories.config 151 | 152 | # Windows Azure Build Output 153 | csx/ 154 | *.build.csdef 155 | 156 | # Windows Store app package directory 157 | AppPackages/ 158 | 159 | # Visual Studio cache files 160 | # files ending in .cache can be ignored 161 | *.[Cc]ache 162 | # but keep track of directories ending in .cache 163 | !*.[Cc]ache/ 164 | 165 | # Others 166 | ClientBin/ 167 | [Ss]tyle[Cc]op.* 168 | ~$* 169 | *~ 170 | *.dbmdl 171 | *.dbproj.schemaview 172 | *.pfx 173 | *.publishsettings 174 | node_modules/ 175 | orleans.codegen.cs 176 | 177 | # RIA/Silverlight projects 178 | Generated_Code/ 179 | 180 | # Backup & report files from converting an old project file 181 | # to a newer Visual Studio version. Backup files are not needed, 182 | # because we have git ;-) 183 | _UpgradeReport_Files/ 184 | Backup*/ 185 | UpgradeLog*.XML 186 | UpgradeLog*.htm 187 | 188 | # SQL Server files 189 | *.mdf 190 | *.ldf 191 | 192 | # Business Intelligence projects 193 | *.rdl.data 194 | *.bim.layout 195 | *.bim_*.settings 196 | 197 | # Microsoft Fakes 198 | FakesAssemblies/ 199 | 200 | # Node.js Tools for Visual Studio 201 | .ntvs_analysis.dat 202 | 203 | # Visual Studio 6 build log 204 | *.plg 205 | 206 | # Visual Studio 6 workspace options file 207 | *.opt 208 | 209 | # LightSwitch generated files 210 | GeneratedArtifacts/ 211 | _Pvt_Extensions/ 212 | ModelManifest.xml 213 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "LibreHardwareMonitor"] 2 | path = LibreHardwareMonitor 3 | url = https://github.com/LibreHardwareMonitor/LibreHardwareMonitor.git 4 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **1. Is this a feature request?** 2 | 3 | *If yes then sorry but this project is not taking feature requests at this time.* 4 | 5 | **2. Your Operating System** 6 | 7 | **3. App Version** 8 | 9 | **4. Any Relevant Settings** 10 | 11 | **5. Steps to Reproduce** 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Sidebar Diagnostics

2 | 3 | A simple sidebar for Windows desktop that displays hardware diagnostic information. 4 | 5 | ### Download 6 | 7 | Go to the releases tab. 8 | 9 | ### Features 10 | * Monitors CPU, RAM, GPU, network, and logical drives. 11 | * Create graphs for all metrics. 12 | * Allows for lots of customization. 13 | * Allows alerts for various values. 14 | * Allows binding hotkeys. 15 | * Supports monitors of all DPI types. 16 | * Has a clock at the top. 17 | 18 | ### Important 19 | 20 | If you are changing your screen's DPI settings, view this page! 21 | 22 | ### Author Note 23 | 24 | This software will always be free on GitHub. If you really like it please consider donating. I'd appreciate it! 25 | Thanks. 26 | 27 | https://www.paypal.me/arcaderenegade 28 | 29 | ### Supported OS 30 | 31 | * Windows 10 32 | * Windows 8.1 33 | * Windows 8 34 | * Windows 7 35 | 36 | ### License 37 | 38 | GNU GENERAL PUBLIC LICENSE 39 | 40 | Please provide a link to this GitHub repository if reuploading. Thank you. 41 | 42 | ### Info 43 | 44 | Written in C# .NET WPF. 45 | 46 | Currently compiled in .NET 4.7.2. 47 | 48 | You will need to run it as administrator. 49 | 50 | Data provided by Libre Hardware Monitor. Please thank the library's contributors for their support! 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /SidebarDiagnostics.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29920.165 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SidebarDiagnostics", "SidebarDiagnostics\SidebarDiagnostics.csproj", "{A1174319-5065-453E-9864-9E7108419DDA}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreHardwareMonitorLib", "LibreHardwareMonitor\LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj", "{8C38AB06-AC1A-49A7-9683-5B4CA7FB0115}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {A1174319-5065-453E-9864-9E7108419DDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {A1174319-5065-453E-9864-9E7108419DDA}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {A1174319-5065-453E-9864-9E7108419DDA}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {A1174319-5065-453E-9864-9E7108419DDA}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {8C38AB06-AC1A-49A7-9683-5B4CA7FB0115}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {8C38AB06-AC1A-49A7-9683-5B4CA7FB0115}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {8C38AB06-AC1A-49A7-9683-5B4CA7FB0115}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {8C38AB06-AC1A-49A7-9683-5B4CA7FB0115}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {57150843-DDB4-488E-8A35-F34859E4DE57} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /SidebarDiagnostics/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /SidebarDiagnostics/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Diagnostics; 5 | using System.Linq; 6 | using System.Net; 7 | using System.Threading.Tasks; 8 | using System.Reflection; 9 | using System.Windows; 10 | using System.Windows.Controls; 11 | using Squirrel; 12 | using Hardcodet.Wpf.TaskbarNotification; 13 | using SidebarDiagnostics.Monitoring; 14 | using SidebarDiagnostics.Utilities; 15 | using SidebarDiagnostics.Windows; 16 | 17 | namespace SidebarDiagnostics 18 | { 19 | /// 20 | /// Interaction logic for App.xaml 21 | /// 22 | public partial class App : Application 23 | { 24 | protected async override void OnStartup(StartupEventArgs e) 25 | { 26 | base.OnStartup(e); 27 | 28 | // ERROR HANDLING 29 | #if !DEBUG 30 | AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppDomain_Error); 31 | #endif 32 | 33 | // LANGUAGE 34 | Culture.SetDefault(); 35 | Culture.SetCurrent(true); 36 | 37 | // UPDATE 38 | #if !DEBUG 39 | if (Framework.Settings.Instance.AutoUpdate) 40 | { 41 | await AppUpdate(false); 42 | } 43 | #endif 44 | 45 | // SETTINGS 46 | CheckSettings(); 47 | 48 | // VERSION 49 | Version _version = Assembly.GetExecutingAssembly().GetName().Version; 50 | string _vstring = _version.ToString(3); 51 | 52 | // TRAY ICON 53 | TrayIcon = (TaskbarIcon)FindResource("TrayIcon"); 54 | TrayIcon.ToolTipText = string.Format("{0} v{1}", Framework.Resources.AppName, _vstring); 55 | TrayIcon.TrayContextMenuOpen += TrayIcon_TrayContextMenuOpen; 56 | 57 | // START APP 58 | if (Framework.Settings.Instance.InitialSetup) 59 | { 60 | new Setup(); 61 | } 62 | else 63 | { 64 | StartApp(false); 65 | } 66 | } 67 | 68 | protected override void OnExit(ExitEventArgs e) 69 | { 70 | TrayIcon.Dispose(); 71 | 72 | base.OnExit(e); 73 | } 74 | 75 | public static void StartApp(bool openSettings) 76 | { 77 | Version _version = Assembly.GetExecutingAssembly().GetName().Version; 78 | string _vstring = _version.ToString(3); 79 | 80 | if (!string.Equals(Framework.Settings.Instance.ChangeLog, _vstring, StringComparison.OrdinalIgnoreCase)) 81 | { 82 | Framework.Settings.Instance.ChangeLog = _vstring; 83 | Framework.Settings.Instance.Save(); 84 | 85 | new ChangeLog(_version).Show(); 86 | } 87 | 88 | new Sidebar(openSettings, Framework.Settings.Instance.InitiallyHidden).Show(); 89 | 90 | RefreshIcon(); 91 | } 92 | 93 | public static void RefreshIcon() 94 | { 95 | TrayIcon.Visibility = Framework.Settings.Instance.ShowTrayIcon ? Visibility.Visible : Visibility.Collapsed; 96 | } 97 | 98 | public static void ShowPerformanceCounterError() 99 | { 100 | MessageBoxResult _result = MessageBox.Show(Framework.Resources.ErrorPerformanceCounter, Framework.Resources.ErrorTitle, MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); 101 | 102 | if (_result == MessageBoxResult.OK) 103 | { 104 | Process.Start(ConfigurationManager.AppSettings["WikiURL"]); 105 | } 106 | } 107 | 108 | public void OpenSettings() 109 | { 110 | Settings _settings = Windows.OfType().FirstOrDefault(); 111 | 112 | if (_settings != null) 113 | { 114 | _settings.WindowState = WindowState.Normal; 115 | _settings.Activate(); 116 | return; 117 | } 118 | 119 | Sidebar _sidebar = Sidebar; 120 | 121 | if (_sidebar == null) 122 | { 123 | return; 124 | } 125 | 126 | new Settings(_sidebar); 127 | } 128 | 129 | public void OpenGraph() 130 | { 131 | Sidebar _sidebar = Sidebar; 132 | 133 | if (_sidebar == null || !_sidebar.Ready) 134 | { 135 | return; 136 | } 137 | 138 | new Graph(_sidebar); 139 | } 140 | 141 | private async Task AppUpdate(bool showInfo) 142 | { 143 | string _exe = await SquirrelUpdate(showInfo); 144 | 145 | if (_exe != null) 146 | { 147 | if (Framework.Settings.Instance.RunAtStartup) 148 | { 149 | Utilities.Startup.EnableStartupTask(_exe); 150 | } 151 | 152 | Process.Start(_exe); 153 | 154 | Shutdown(); 155 | } 156 | } 157 | 158 | private async Task SquirrelUpdate(bool showInfo) 159 | { 160 | try 161 | { 162 | using (UpdateManager _manager = new UpdateManager(ConfigurationManager.AppSettings["CurrentReleaseURL"])) 163 | { 164 | UpdateInfo _update = await _manager.CheckForUpdate(); 165 | 166 | if (_update.ReleasesToApply.Any()) 167 | { 168 | Version _newVersion = _update.ReleasesToApply.OrderByDescending(r => r.Version).First().Version.Version; 169 | 170 | Update _updateWindow = new Update(); 171 | _updateWindow.Show(); 172 | 173 | await _manager.UpdateApp((p) => _updateWindow.SetProgress(p)); 174 | 175 | _updateWindow.Close(); 176 | 177 | return Utilities.Paths.Exe(_newVersion); 178 | } 179 | else if (showInfo) 180 | { 181 | MessageBox.Show(Framework.Resources.UpdateSuccessText, Framework.Resources.AppName, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); 182 | } 183 | } 184 | } 185 | catch (WebException) 186 | { 187 | if (showInfo) 188 | { 189 | MessageBox.Show(Framework.Resources.UpdateErrorText, Framework.Resources.UpdateErrorTitle, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); 190 | } 191 | } 192 | catch (Exception e) 193 | { 194 | Framework.Settings.Instance.AutoUpdate = false; 195 | Framework.Settings.Instance.Save(); 196 | 197 | using (EventLog _log = new EventLog("Application")) 198 | { 199 | _log.Source = Framework.Resources.AppName; 200 | _log.WriteEntry(e.ToString(), EventLogEntryType.Error, 100, 1); 201 | } 202 | 203 | MessageBox.Show(Framework.Resources.UpdateErrorFatalText, Framework.Resources.UpdateErrorTitle, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); 204 | } 205 | 206 | return null; 207 | } 208 | 209 | private void CheckSettings() 210 | { 211 | if (Framework.Settings.Instance.RunAtStartup && !Utilities.Startup.StartupTaskExists()) 212 | { 213 | Utilities.Startup.EnableStartupTask(); 214 | } 215 | 216 | Framework.Settings.Instance.MonitorConfig = MonitorConfig.CheckConfig(Framework.Settings.Instance.MonitorConfig); 217 | } 218 | 219 | private void TrayIcon_TrayContextMenuOpen(object sender, RoutedEventArgs e) 220 | { 221 | Monitor _primary = Monitor.GetMonitors().GetPrimary(); 222 | 223 | TrayIcon.ContextMenu.HorizontalOffset *= _primary.InverseScaleX; 224 | TrayIcon.ContextMenu.VerticalOffset *= _primary.InverseScaleY; 225 | } 226 | 227 | private void Settings_Click(object sender, EventArgs e) 228 | { 229 | OpenSettings(); 230 | } 231 | 232 | private void Reload_Click(object sender, EventArgs e) 233 | { 234 | Sidebar _sidebar = Sidebar; 235 | 236 | if (_sidebar == null) 237 | { 238 | return; 239 | } 240 | 241 | _sidebar.Reload(); 242 | } 243 | 244 | private void Graph_Click(object sender, EventArgs e) 245 | { 246 | OpenGraph(); 247 | } 248 | 249 | private void Visibility_SubmenuOpened(object sender, EventArgs e) 250 | { 251 | Sidebar _sidebar = Sidebar; 252 | 253 | if (_sidebar == null) 254 | { 255 | return; 256 | } 257 | 258 | MenuItem _this = (MenuItem)sender; 259 | 260 | (_this.Items.GetItemAt(0) as MenuItem).IsChecked = _sidebar.Visibility == Visibility.Visible; 261 | (_this.Items.GetItemAt(1) as MenuItem).IsChecked = _sidebar.Visibility == Visibility.Hidden; 262 | } 263 | 264 | private void Show_Click(object sender, EventArgs e) 265 | { 266 | Sidebar _sidebar = Sidebar; 267 | 268 | if (_sidebar == null || _sidebar.Visibility == Visibility.Visible) 269 | { 270 | return; 271 | } 272 | 273 | _sidebar.AppBarShow(); 274 | } 275 | 276 | private void Hide_Click(object sender, EventArgs e) 277 | { 278 | Sidebar _sidebar = Sidebar; 279 | 280 | if (_sidebar == null || _sidebar.Visibility == Visibility.Hidden) 281 | { 282 | return; 283 | } 284 | 285 | _sidebar.AppBarHide(); 286 | } 287 | 288 | private void Donate_Click(object sender, RoutedEventArgs e) 289 | { 290 | Process.Start(ConfigurationManager.AppSettings["DonateURL"]); 291 | } 292 | 293 | private void GitHub_Click(object sender, RoutedEventArgs e) 294 | { 295 | Process.Start(ConfigurationManager.AppSettings["RepoURL"]); 296 | } 297 | 298 | private async void Update_Click(object sender, RoutedEventArgs e) 299 | { 300 | await AppUpdate(true); 301 | } 302 | 303 | private void Close_Click(object sender, EventArgs e) 304 | { 305 | Shutdown(); 306 | } 307 | 308 | private static void AppDomain_Error(object sender, UnhandledExceptionEventArgs e) 309 | { 310 | Exception ex = (Exception)e.ExceptionObject; 311 | 312 | MessageBox.Show(ex.ToString(), Framework.Resources.ErrorTitle, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK, MessageBoxOptions.DefaultDesktopOnly); 313 | } 314 | 315 | public Sidebar Sidebar 316 | { 317 | get 318 | { 319 | return Windows.OfType().FirstOrDefault(); 320 | } 321 | } 322 | 323 | public IEnumerable Graphs 324 | { 325 | get 326 | { 327 | return Windows.OfType(); 328 | } 329 | } 330 | 331 | public new static App Current 332 | { 333 | get 334 | { 335 | return (App)Application.Current; 336 | } 337 | } 338 | 339 | public static TaskbarIcon TrayIcon { get; set; } 340 | 341 | internal static bool _reloading { get; set; } = false; 342 | } 343 | } -------------------------------------------------------------------------------- /SidebarDiagnostics/ChangeLog.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Version": "3.6.3", 4 | "Changes": [ 5 | "Updated Libre Hardware Monitor.", 6 | "Arabic language support." 7 | ] 8 | }, 9 | { 10 | "Version": "3.6.2", 11 | "Changes": [ 12 | "Fix GPU fan metric bug.", 13 | "Fix GPU VRAM load metric bug." 14 | ] 15 | }, 16 | { 17 | "Version": "3.6.1", 18 | "Changes": [ 19 | "Updated Libre Hardware Monitor.", 20 | "Fix GPU fan metric bug." 21 | ] 22 | }, 23 | { 24 | "Version": "3.6.0", 25 | "Changes": [ 26 | "Updated Libre Hardware Monitor." 27 | ] 28 | }, 29 | { 30 | "Version": "3.5.9", 31 | "Changes": [ 32 | "Updated Libre Hardware Monitor." 33 | ] 34 | }, 35 | { 36 | "Version": "3.5.8", 37 | "Changes": [ 38 | "Updated Libre Hardware Monitor." 39 | ] 40 | }, 41 | { 42 | "Version": "3.5.7", 43 | "Changes": [ 44 | "Updated Libre Hardware Monitor.", 45 | "i18n language updates (thank you contributors)." 46 | ] 47 | }, 48 | { 49 | "Version": "3.5.6", 50 | "Changes": [ 51 | "Updated Libre Hardware Monitor.", 52 | "Russian language support.", 53 | "Italian language support.", 54 | "Fix: AMD core chiplet dies temperature (Ryzen Master)" 55 | ] 56 | }, 57 | { 58 | "Version": "3.5.5", 59 | "Changes": [ 60 | "Bug fix for Ryzen CPU clock speed.", 61 | "Bug fix for AMD Video Card VRAM." 62 | ] 63 | }, 64 | { 65 | "Version": "3.5.4", 66 | "Changes": [ 67 | "Update to latest version of Libre Hardware Monitor.", 68 | "Bug fix for Ryzen CPU temperature.", 69 | "Thanks for the PR, @hirschmann!", 70 | "Also broke the auto-updater in the last version but it should work from now on.", 71 | "Sorry if you had to re-install!" 72 | ] 73 | }, 74 | { 75 | "Version": "3.5.3", 76 | "Changes": [ 77 | "Now uses Libre Hardware Monitor instead of Open Hardware Monitor for Ryzen support." 78 | ] 79 | }, 80 | { 81 | "Version": "3.5.2", 82 | "Changes": [ 83 | "Added an option to show the computer name at the top of the sidebar.", 84 | "Enable it in the settings under the customize tab.", 85 | "Disabled by default." 86 | ] 87 | }, 88 | { 89 | "Version": "3.5.1", 90 | "Changes": [ 91 | "Fix for high DPI monitors or settings.", 92 | "Fix for sidebar floating left or right." 93 | ] 94 | }, 95 | { 96 | "Version": "3.5.0", 97 | "Changes": [ 98 | "Updated to .NET framework v4.7.1.", 99 | "Updated dependencies." 100 | ] 101 | }, 102 | { 103 | "Version": "3.4.6", 104 | "Changes": [ 105 | "Updated to the latest version of Open Hardware Monitor.", 106 | "Updated dependencies." 107 | ] 108 | }, 109 | { 110 | "Version": "3.4.5", 111 | "Changes": [ 112 | "Updated to the latest version of Open Hardware Monitor with bugfix for Kaby Lake clock speed.", 113 | "The \"UI Scale\" setting now only affects the sidebar window.", 114 | "Hardware names should now update correctly after the hardware is changed.", 115 | "Unfortunately, this fix reset your custom hardware names but you can rename them back.", 116 | "The app should now correctly run on Windows startup for laptops running on battery power.", 117 | "All isatap network interfaces should be filtered now.", 118 | "Updated dependencies." 119 | ] 120 | }, 121 | { 122 | "Version": "3.4.4", 123 | "Changes": [ 124 | "Updated to the latest version of Open Hardware Monitor with Kaby Lake support.", 125 | "Updated dependencies." 126 | ] 127 | }, 128 | { 129 | "Version": "3.4.3", 130 | "Changes": [ 131 | "ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) are now filtered via Regex from Network Adapters to monitor.", 132 | "Showing or toggling the sidebar will no longer cause it to activate or gain focus.", 133 | "The \"Show in Alt + Tab\" option has been renamed \"Toolbar Mode\".", 134 | "Enabling Toolbar Mode allows the sidebar to persist between Virtual Desktops and not show up in the Alt + Tab menu.", 135 | "Want to help translate? Please visit the GitHub wiki!" 136 | ] 137 | }, 138 | { 139 | "Version": "3.4.2", 140 | "Changes": [ 141 | "Added a network metric for external IP address, disabled by default.", 142 | "Be careful when sharing your desktop to not show your public IP address.", 143 | "Removed Virtual Desktop support due to incompatibilities and errors.", 144 | "If you want the sidebar to persist between different Virtual Desktops, you can disable the \"Show in Alt + Tab\" setting instead.", 145 | "Want to help translate? Please visit the GitHub wiki!" 146 | ] 147 | }, 148 | { 149 | "Version": "3.4.1", 150 | "Changes": [ 151 | "Fixed a bug where the default hardware name stayed the same after the hardware was replaced.", 152 | "Sidebar now remains visible during Aero peek.", 153 | "Added a new hotkey for toggling \"Reserve Space\".", 154 | "Fixed a bug where changes to hotkeys would not apply immediately after saving.", 155 | "Want to help translate? Please visit the GitHub wiki!" 156 | ] 157 | }, 158 | { 159 | "Version": "3.4.0", 160 | "Changes": [ 161 | "Fixed a crash when click-through is enabled with 32 bit Windows.", 162 | "Want to help translate? Please visit the GitHub wiki!" 163 | ] 164 | }, 165 | { 166 | "Version": "3.3.9", 167 | "Changes": [ 168 | "Added a setting to enable or disable Virtual Desktop support.", 169 | "Want to help translate? Please visit the GitHub wiki!" 170 | ] 171 | }, 172 | { 173 | "Version": "3.3.8", 174 | "Changes": [ 175 | "Added a metric for Network Adapter IPV4 address. Thanks dknedlik.", 176 | "Added a setting under advanced to hide the sidebar at startup.", 177 | "Want to help translate? Please visit the GitHub wiki!" 178 | ] 179 | }, 180 | { 181 | "Version": "3.3.7", 182 | "Changes": [ 183 | "Fixed a fatal error that occurred during auto-update.", 184 | "Added a setting to enable or disable \"Alert Blink\".", 185 | "Polling is now paused when the sidebar is hidden to reduce CPU usage.", 186 | "Want to help translate? Please visit the GitHub wiki!" 187 | ] 188 | }, 189 | { 190 | "Version": "3.3.6", 191 | "Changes": [ 192 | "Metric alerts now blink to be more conspicuous.", 193 | "Fixed a bug with the font size settings.", 194 | "Want to help translate? Please visit the GitHub wiki!" 195 | ] 196 | }, 197 | { 198 | "Version": "3.3.5", 199 | "Changes": [ 200 | "Fixed network bandwidth alerts.", 201 | "Want to help translate? Please visit the GitHub wiki!" 202 | ] 203 | }, 204 | { 205 | "Version": "3.3.4", 206 | "Changes": [ 207 | "Made the \"Show Desktop\" fix for when \"Always on Top\" is disabled to be more consistent.", 208 | "Want to help translate? Please visit the GitHub wiki!" 209 | ] 210 | }, 211 | { 212 | "Version": "3.3.3", 213 | "Changes": [ 214 | "Localization updates.", 215 | "Want to help translate? Please visit the GitHub wiki!" 216 | ] 217 | }, 218 | { 219 | "Version": "3.3.2", 220 | "Changes": [ 221 | "Added an option for \"Text Align\" right or left.", 222 | "Added complete localization for French and Chinese.", 223 | "Thanks @AlexandreBT and @Vassile-D.", 224 | "Want to help translate? Please visit the GitHub wiki!" 225 | ] 226 | }, 227 | { 228 | "Version": "3.3.1", 229 | "Changes": [ 230 | "Added the option to enable or disable specific metrics.", 231 | "Fixed a bug where charts for scaling metrics like bandwidth were incorrect.", 232 | "Finished preparing all text for localization.", 233 | "The complete Excel file of all text to be translated has been uploaded to the localization thread.", 234 | "Want to help translate? Please visit the GitHub wiki!" 235 | ] 236 | }, 237 | { 238 | "Version": "3.3.0", 239 | "Changes": [ 240 | "Added graphs.", 241 | "For performance reasons, graphs only store data while they are open. No historical data.", 242 | "Fixed French being missing in the Language dropdown." 243 | ] 244 | }, 245 | { 246 | "Version": "3.2.1", 247 | "Changes": [ 248 | "Fixed a bug where the sidebar would often freeze between updates.", 249 | "Fixed a bug with reserved space in Windows 7.", 250 | "Added an option for Language." 251 | ] 252 | }, 253 | { 254 | "Version": "3.2.0", 255 | "Changes": [ 256 | "Fixed all high DPI monitor issues.", 257 | "For real this time guys.", 258 | "Removed the \"High DPI Support\" option as it is now redundant.", 259 | "Please set your horizontal and vertical offset options back to 0.", 260 | "Added initial localization for Danish, Dutch, German, and Japanese.", 261 | "Want to help localize? Please visit the GitHub wiki!" 262 | ] 263 | }, 264 | { 265 | "Version": "3.1.0", 266 | "Changes": [ 267 | "Implemented initial French localization.", 268 | "Want to help localize? Please visit the GitHub wiki!", 269 | "Added error handling for when the app fails to update.", 270 | "Added a catch for an error involving virtual desktops." 271 | ] 272 | }, 273 | { 274 | "Version": "3.0.8", 275 | "Changes": [ 276 | "Added the option to show or hide the sidebar in Alt + Tab.", 277 | "Minor consistency changes." 278 | ] 279 | }, 280 | { 281 | "Version": "3.0.7", 282 | "Changes": [ 283 | "Fixed two issues that caused higher CPU usage than necessary.", 284 | "The settings.json file is now formatted and indented to make it easier to edit manually." 285 | ] 286 | }, 287 | { 288 | "Version": "3.0.6", 289 | "Changes": [ 290 | "Fixed a fatal error for Windows 8." 291 | ] 292 | }, 293 | { 294 | "Version": "3.0.5", 295 | "Changes": [ 296 | "Fixed the default monitor settings being in the reverse order.", 297 | "The sidebar will now reposition when the work area changes if \"Reserve Space\" is disabled.", 298 | "New version of the install and update framework." 299 | ] 300 | }, 301 | { 302 | "Version": "3.0.4", 303 | "Changes": [ 304 | "Fixed a bug where the sidebar would disappear when \"Show Desktop\" occurs.", 305 | "This was a tricky one. So please let me know if it works for you or not.", 306 | "Sorting monitors is now done via drag and drop.", 307 | "Added the ability to sort hardware via drag and drop.", 308 | "This created a bug where you have to double click the checkbox to enable or disable hardware.", 309 | "Working on a fix for that." 310 | ] 311 | }, 312 | { 313 | "Version": "3.0.3", 314 | "Changes": [ 315 | "Added a \"Auto Background Color\" option.", 316 | "This will set the sidebar's background color to your Windows color settings.", 317 | "Updated the icon for drives so it doesn't look like a speaker anymore.", 318 | "Added a change log window that pops up after updating.", 319 | "Minor bug fixes." 320 | ] 321 | } 322 | ] 323 | -------------------------------------------------------------------------------- /SidebarDiagnostics/ChangeLog.xaml: -------------------------------------------------------------------------------- 1 |  20 | 21 | 22 |