Pulse
July 12, 2026 ยท View on GitHub
A fast, native Windows replacement for Task Manager, built with C# / .NET WinUI 3.
๐งช Now in Open Beta
โฌ Download the Open Beta ยท Report a bug or request a feature
Pulse 1.0.0 Open Beta is feature-complete and stable in daily use โ but it's a beta, so rough edges are possible and feedback is very welcome. It's not code-signed yet, so Windows SmartScreen may warn "unknown publisher" (More info โ Run anyway).
A real WinUI 3 app (src/Pulse/) with five pages โ Processes (filter, per-process disk I/O, right-click End/Restart/Suspend/Resume/priority/end-tree, details), Performance (CPU, per-core, GPU/power/temps, disk, network), Startup apps, Services (start/stop/restart), and Settings (run-as-admin, appearance, tray, always-on-top, update speed, custom colors, density, column chooser, "make Pulse the default Task Manager"). The HTML in mockups/ remains the visual target for the fuller design.
Repository layout
Pulse/
โโ src/Pulse/ โ WinUI 3 app (the real thing)
โโ docs/ โ GitHub Pages download/landing site (docs/index.html)
โโ mockups/ โ Clickable HTML prototype of the app UI (visual spec)
โโ README.md
src/Pulse/ โ the app
App.xaml(.cs) โ app entry point
MainWindow.xaml(.cs) โ the window: stat cards, toolbar, process list
Models/ProcessInfo.cs โ one process row (INotifyPropertyChanged)
Services/SystemMonitor.csโ process sampling + CPU%/RAM math + End task
Services/Native.cs โ GlobalMemoryStatusEx P/Invoke for total/used RAM
Build & run
Requires the .NET 8 SDK and the Windows App Runtime 1.8 (already present on the dev machine).
cd src/Pulse
dotnet build Pulse.csproj -c Debug -p:Platform=x64
./bin/x64/Debug/net8.0-windows10.0.19041.0/Pulse.exe
It's an unpackaged WinUI 3 app (WindowsPackageType=None), so it launches straight from the built .exe โ no MSIX install needed during development.
Make Pulse the default Task Manager
Settings โ Make Pulse the default Task Manager flips a switch that redirects every way Windows opens Task Manager (Ctrl+Shift+Esc, the taskbar menu, Run โ taskmgr) to Pulse. It works via the Image File Execution Options Debugger hook and needs one admin approval. The switch writes/removes this value (what you'd otherwise do by hand in regedit):
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe
Debugger = "C:\path\to\Pulse.exe" (REG_SZ)
Turning the switch off (or deleting that value) restores the built-in Task Manager.
What works today
- Live process list: name, per-process CPU % (from CPU-time deltas), working-set memory, threads, PID, responding status.
- Real total CPU % and RAM with progress bars, live process count.
- Click any column header to sort (toggles asc/desc); End task button + double-click to kill.
- Native Mica backdrop, follows the system light/dark theme.
The two deliverables so far
1. App UI mockup โ mockups/index.html
Open it in any browser. It emulates the WinUI 3 / Fluent look and is fully clickable:
- Processes โ grouped Apps/Background list, heat-mapped CPU/Mem/Disk/Net/GPU columns, sortable headers, row selection, End task, live-updating values.
- Performance โ animated CPU graph + per-core grid, plus Memory / Disk / Wi-Fi / GPU with sparklines and stat panels.
- Startup apps โ impact ratings and enable/disable toggles.
- Light/dark theme toggle (bottom-right).
This is the reference we'll translate into XAML.
2. Download page โ docs/index.html
The marketing/download site, ready for GitHub Pages.
Distribution: GitHub Releases + Pages
One-time setup
- Create a repo named
pulseunder github.com/AverageCodeNerd and push this folder (links already point at your username). - Enable Pages: repo Settings โ Pages โ Source:
Deploy from a branchโ Branch:main/ folder:/docs. Your site goes live athttps://AverageCodeNerd.github.io/pulse/. - (Optional) Add a custom domain in the same Pages settings.
Cutting a release
Requires the .NET 8 SDK and Inno Setup 6.
# 1. Self-contained publish (bundles .NET + Windows App SDK โ end users need nothing)
cd src/Pulse
dotnet publish Pulse.csproj -c Release -p:Platform=x64 -r win-x64 --self-contained true -p:WindowsAppSDKSelfContained=true
# 2. Package the installer (per-user, no admin) -> dist/Pulse-Setup.exe
& "$env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe" installer/Pulse.iss
# 3. Publish the GitHub release
gh release create v0.7.0 dist/Pulse-Setup.exe dist/Pulse-portable-x64.zip --title "Pulse v0.7.0" --notes-file notes.md
The download buttons point at .../releases/latest/download/Pulse-Setup.exe, so they always resolve to the newest release โ no page edits per version.
Next steps
- WinUI 3 project with a live Processes view against real data.
- Left-rail navigation + Performance page (CPU history graph, per-core grid).
- Startup apps page via the registry
Runkeys + Startup folders. - GPU / power / temperature (NVML) + disk & network graphs on Performance.
- Settings page + "make Pulse the default Task Manager" (IFEO hook).
- App icon + self-contained installer + release (download button works).
- Process filter, Run new task, right-click actions (Restart / Open location / Copy), details dialog, Delete shortcut.
- Persisted settings + light/dark/system appearance + always on top.
- Services page (list + start/stop/restart via elevated relaunch).
- Run as administrator; per-process Disk I/O column.
- Power actions: Suspend/Resume, End process tree, Set priority.
- Customization: custom graph colors, compact/comfortable density, sort arrows, empty states.
- Column chooser (show/hide process columns) and close-to-system-tray.
- Per-process GPU (PDH GPU-Engine counters) and Network (ETW kernel session, admin-only) columns.
- Code-signing pipeline ready (
SIGNING.md,installer/build-release.ps1) โ needs a certificate to actually sign. - Obtain a code-signing certificate (Azure Trusted Signing) to remove the SmartScreen warning.
- Column reordering; winget / Scoop; ARM64 build.
- CPU package power/temperature (needs a signed kernel driver, e.g. LibreHardwareMonitor).
License
MIT (intended).