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

  1. Create a repo named pulse under github.com/AverageCodeNerd and push this folder (links already point at your username).
  2. Enable Pages: repo Settings โ†’ Pages โ†’ Source: Deploy from a branch โ†’ Branch: main / folder: /docs. Your site goes live at https://AverageCodeNerd.github.io/pulse/.
  3. (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 Run keys + 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).