A modern, cross-platform task manager built with .NET 8 and Avalonia UI
Features β’ Installation β’ Building β’ Architecture β’ Contributing
TaskMGR is a native, high-performance system monitor and process manager that runs on both Windows and macOS from a single codebase. It provides real-time process monitoring, system resource visualization, and process management capabilities with a modern dark-themed interface.
- π Real-Time Process Monitoring β View all running processes with PID, name, CPU%, memory usage, status, and user
- π» System Metrics Dashboard β Live CPU usage, memory consumption, process count, and system uptime
- β‘ Process Control β Terminate selected processes with a single click
- π Instant Search β Filter processes by name in real-time
- π Auto-Refresh β Automatic updates every 2 seconds (configurable)
- π Dark Theme β Modern dark UI optimized for extended use
- π₯οΈ Cross-Platform β Native performance on Windows 10+ and macOS 11+
Download the latest release for your platform from the Releases page.
| Platform | Architecture | Download |
|---|---|---|
| Windows | x64 | TaskMGR-win-x64.zip |
| Windows | ARM64 | TaskMGR-win-arm64.zip |
| macOS | Intel | TaskMGR-osx-x64.dmg |
| macOS | Apple Silicon | TaskMGR-osx-arm64.dmg |
| Platform | Minimum Version |
|---|---|
| Windows | Windows 10 (1809+) |
| macOS | macOS 11 Big Sur |
Note: Pre-built releases are self-contained β no .NET runtime installation required.
- .NET 8 SDK or later
- Git
# Clone the repository
git clone https://github.com/yourusername/TaskMGR.git
cd TaskMGR
# Restore dependencies
dotnet restore
# Build in Debug mode
dotnet build
# Run the application
dotnet run --project src/TaskMGR.UIdotnet publish src/TaskMGR.UI -c Release -r osx-arm64 --self-contained -p:PublishSingleFile=truedotnet publish src/TaskMGR.UI -c Release -r osx-x64 --self-contained -p:PublishSingleFile=truedotnet publish src/TaskMGR.UI -c Release -r win-x64 --self-contained -p:PublishSingleFile=truedotnet publish src/TaskMGR.UI -c Release -r win-arm64 --self-contained -p:PublishSingleFile=trueOutput will be in src/TaskMGR.UI/bin/Release/net8.0/{runtime}/publish/
π¦ See PACKAGING.md for detailed instructions on creating
.appbundles and.dmginstallers for macOS.
TaskMGR/
βββ src/
β βββ TaskMGR.Core/ # Shared abstractions and models
β β βββ Interfaces/
β β β βββ IPlatformService.cs # Platform abstraction interface
β β β βββ IProcessProvider.cs # Process operations contract
β β β βββ ISystemMetricsProvider.cs
β β βββ Models/
β β βββ ProcessInfo.cs # Process data model
β β βββ SystemMetrics.cs # System metrics model
β β
β βββ TaskMGR.Platform.Windows/ # Windows-specific implementation
β β βββ WindowsPlatformService.cs # P/Invoke with kernel32.dll
β β
β βββ TaskMGR.Platform.MacOS/ # macOS-specific implementation
β β βββ MacOSPlatformService.cs # Shell commands (ps, vm_stat)
β β
β βββ TaskMGR.UI/ # Avalonia UI application
β βββ ViewModels/
β β βββ MainWindowViewModel.cs
β βββ Views/
β βββ Converters/
β βββ Services/
β β βββ PlatformServiceFactory.cs
β βββ MainWindow.axaml # Main UI layout
β βββ Program.cs # Entry point
β
βββ TaskMGR.sln # Solution file
βββ README.md
βββ PACKAGING.md # Distribution guide
TaskMGR follows a clean, layered architecture with platform-specific implementations abstracted behind shared interfaces.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
β TaskMGR.UI (Avalonia + MVVM) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Abstraction Layer β
β TaskMGR.Core (Interfaces + Models) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββ΄βββββββββββββ
βΌ βΌ
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
β TaskMGR.Platform β β TaskMGR.Platform β
β .Windows β β .MacOS β
β (P/Invoke APIs) β β (Shell Commands) β
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
| Pattern | Usage |
|---|---|
| MVVM | Separation of UI and business logic via ViewModels and data binding |
| Strategy | IPlatformService implementations for OS-specific behavior |
| Factory | PlatformServiceFactory for runtime platform detection |
| Observer | INotifyPropertyChanged for reactive UI updates |
| Component | Technology |
|---|---|
| Runtime | .NET 8.0 LTS |
| UI Framework | Avalonia UI 11.3 |
| MVVM Toolkit | CommunityToolkit.Mvvm 8.2 |
| Theme | Fluent Design (Dark) |
The core challenge of cross-platform development is handling OS-specific APIs. TaskMGR solves this with a Strategy pattern:
Windows: Uses P/Invoke with kernel32.dll and the .NET Process class for accurate CPU percentage calculations with temporal caching.
macOS: Parses native shell commands (ps, top, vm_stat) since Darwin doesn't expose the same APIs as Windows.
// The UI layer consumes IPlatformService without knowing the underlying OS
public interface IPlatformService : IProcessProvider, ISystemMetricsProvider
{
string PlatformName { get; }
}At runtime, PlatformServiceFactory detects the OS and instantiates the correct implementation:
public static IPlatformService Create()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return new WindowsPlatformService();
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
return new MacOSPlatformService();
throw new PlatformNotSupportedException();
}- Launch the application β The main window displays system metrics and a process list
- Search processes β Type in the search box to filter by process name
- View details β Click any process to select it
- End a process β Select a process and click "End Task" to terminate it
- Refresh β Data auto-refreshes every 2 seconds, or click "Refresh" manually
Contributions are welcome! Here's how to get started:
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone your fork
git clone https://github.com/yourusername/TaskMGR.git
# Install dependencies
dotnet restore
# Run in development mode (with hot reload)
dotnet watch --project src/TaskMGR.UIThis project is licensed under the MIT License β see the LICENSE file for details.