Chargle

Arihant Tripathy·Arihant25.Chargle

Plays a sound when your laptop starts or stops charging.

Chargle sits in the system tray and watches the power source. Plug the charger in and it plays a short rising sound, pull it out and the sound falls, so you can tell what happened without looking at the battery icon. Eight sound packs are built in, all of them generated by code in the repository rather than recorded, and you can point the app at your own audio files instead. If you would rather not hear anything, it can show a small on-screen panel in its place, in a few styles and positions. It stays quiet during Do Not Disturb, full-screen apps and screen sharing. There is no account to make and no telemetry of any kind.

winget install --id Arihant25.Chargle --exact --source winget

Latest 1.1.1·August 23, 2026

Release Notes

Chargle no longer dies every time you sign in.

Run at login worked everywhere except at login

If you turned on Start Chargle when I sign in, the Store build never survived the sign-in that followed. A splash screen sat on screen for around two minutes, then vanished, and there was no tray icon and no Chargle. Opening it from the Start menu straight afterwards worked perfectly, which made it look like the app disliked being started early rather than being started at all.

The manifest is where it went wrong. The startup task declared its entry point as $targetentrypoint$, the same token the main application entry uses. The MSIX tooling substitutes that token on the Application element and nowhere else, so what shipped inside the package was the literal string, dollar signs and all:

<Application Id="App" Executable="Chargle.exe" EntryPoint="Windows.FullTrustApplication">
  <uap5:Extension Category="windows.startupTask" Executable="Chargle.exe"
                  EntryPoint="$targetentrypoint$">

Launching from the Start menu goes through the first line and gets full-trust Win32 activation. Signing in goes through the second, and Windows took the unrecognised entry point to mean this was an ordinary packaged app, not a Win32 one. So it did what it does for those:put the splash screen up and waited for a CoreWindow to appear. Chargle is a Win32 app and never creates one.

Meanwhile Microsoft.UI.Xaml.Application.Start failed immediately with REGDB_E_CLASSNOTREG, because the XAML runtime cannot start under that kind of activation. The process was gone in under half a second. The two minutes were the shell waiting for a window from a process that had already exited, and the splash screen was the clearest evidence available all along — a full-trust launch never shows one.

The startup task now names Windows.FullTrustApplication outright, with a comment next to it explaining why it cannot be the token.

The crash log was empty the whole time

Chargle writes unhandled exceptions to crash.log precisely so that a tray app dying quietly leaves something behind. It had nothing to say about any of this.

The handlers that write that file are installed in OnLaunched, and OnLaunched never ran — the failure happened in Application.Start, one frame further out, before there was an application to hand it to. The only record was an entry in Event Viewer.

Chargle now supplies its own entry point instead of using the generated one, so Application.Start runs inside a try. A failure there is logged and then rethrown rather than swallowed:with no window and no message loop there is nothing left to recover to, and quietly exiting would have destroyed the Windows Error Reporting entry too, which was the only usable evidence this time round.

Nothing else changed

No settings move, and nothing needs turning back on. If run-at-login is already switched on, it will simply work at your next sign-in.

Getting it

The Microsoft Store version updates on its own once this build is through review.

winget install 9PP0T5VTMSC2

That is the Store build, through winget's msstore source.

The portable build was never affected by this. It registers run-at-login with a Run key under HKCU and passes --background on the command line, so no part of the package manifest is involved. Both builds are attached below.

Installer type: zip

x64—4EA6368F5E7A84D6ACE76ECB87D4DEE73336D912D88D14A242FA621F55DC38E4
arm64—7A7BD8B2A3B3B56D225306671B8A0488AC1AF88E9029741E1928DE163624A7B9

Details

Homepage
https://arihant25.github.io/Chargle/
License
MIT
Publisher
Arihant Tripathy
Support
https://github.com/Arihant25/Chargle/issues
Privacy Policy
https://arihant25.github.io/Chargle/privacy.html
Copyright
Copyright (c) 2026 Arihant Tripathy
Moniker
chargle

Tags

batterychargercharginglaptopnotificationpowersoundsystem-traytrayutility

Older versions (1)

1.0.0
x64—A5D59DA0E447FEACED6A96C2BA9C706AE33E2FE33DCDF060D76652C668AE8E65
arm64—4702EA4720DC04C7421A98014A0A5663937367CD8874FA948DDCBF2116E8706A