A feature-rich, always-on-top desktop clock widget for Windows built with WPF (.NET 10). It sits unobtrusively in the corner of your screen — frameless, transparent, hidden from the taskbar and Alt+Tab — and offers both analog and digital displays with deep customization.
- Analog clock — rendered entirely with WPF vector graphics (no images); hour, minute, and second hands are each individually toggleable
- Digital clock — 12-hour (with AM/PM) or 24-hour format
- Digital-only mode — hides the analog face entirely for a compact display
- Date display — 6 format options: Full, Short, ISO, Friendly, Day Only, or hidden
Five one-click preset styles via the right-click context menu:
| Style | Description |
|---|---|
| Classic | Analog + digital, semi-transparent dark background |
| Minimal Digital | Digital only, fully transparent background, lightweight font |
| Slim Ring | Analog with a very transparent background and thin hands |
| Skeleton | Analog with a fully transparent background and tick markers |
| HUD Overlay | Digital only, transparent green-on-black Consolas display with border glow |
- Bangla digits (০–১২) or English digits (1–12)
- Dot markers — small dots at each hour, larger at 3/6/9/12
- Tick marks — radial ticks, thicker at quarter hours
- None — clean ring only
Every visual element can be independently colored, with preset swatches or a custom color picker:
- Clock face / ring
- Background (supports transparency/alpha)
- Hour, minute, and second hands
- Date text and time text
- Set via a dialog with hour/minute/AM-PM dropdowns
- Alarm indicator displayed on the widget face
- On trigger: flashes red/gold and plays a system sound every 3 seconds
- Dismiss by clicking the indicator or via the context menu
- Alarm time persists across restarts
- Toggle visibility from the context menu
- Start/pause and reset controls built into the widget
- Displays
hh:mm:ss.ff, updates every 50 ms
- Set hours/minutes/seconds via dialog (defaults to 5 minutes)
- Start/pause and reset controls inline
- On expiry: flashes red/orange and plays a system sound every 3 seconds
- Panel visibility persists across restarts
- Frameless and transparent — blends into any desktop
- Not in taskbar or Alt+Tab — truly unobtrusive
- Draggable — click and drag anywhere on the widget to reposition
- Always on Top — manual toggle or Smart Multi-Screen mode (activates only when more than one monitor is detected)
- Three size options — Small (50%), Medium (100%), Large (150%)
- Drop shadow on the outer border
- Starts at the top-right corner of the primary monitor
- OS: Windows 10 or Windows 11 (x64)
- Runtime: .NET 10.0 (or use the self-contained published build — no runtime install required)
Prerequisites: .NET 10 SDK, Windows OS
# Clone the repository
git clone https://github.com/arklnd/DesktopClockWidget.git
cd DesktopClockWidget
# Run directly
dotnet run
# Or build a Release binary
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:PublishReadyToRun=trueYou can also open DesktopClockWidget.sln in Visual Studio 2022 and press F5.
Right-click anywhere on the widget to open the context menu with all options:
Clock Style ▶ Classic / Minimal Digital / Slim Ring / Skeleton / HUD Overlay
Clock Face ▶ Color and marker options
Time Format ▶ 12-hour / 24-hour
Date Format ▶ Full / Short / ISO / Friendly / Day Only / None
Show Hands ▶ Hour / Minute / Second
Size ▶ Small / Medium / Large
Digital Only
Background Color
Text Color
─────────────────
Set Alarm...
Stopwatch
Timer
─────────────────
Always on Top
Smart Always on Top (Multi-Screen)
─────────────────
Reset to Defaults
Exit
All preferences are saved automatically to:
%LocalAppData%\DesktopClockWidget\settings.json
Settings are loaded on startup and written immediately on every change. Available properties:
| Setting | Type | Default | Description |
|---|---|---|---|
Scale |
double | 1.0 |
Widget scale: 0.5 / 1.0 / 1.5 |
IsDigitalOnly |
bool | false |
Hide the analog clock face |
Is24Hour |
bool | false |
24-hour vs 12-hour format |
IsBangla |
bool | true |
Use Bangla digits on the clock ring |
ShowHourHand |
bool | true |
Show/hide the hour hand |
ShowMinuteHand |
bool | true |
Show/hide the minute hand |
ShowSecondHand |
bool | true |
Show/hide the second hand |
AlwaysOnTop |
bool | true |
Keep widget above all windows |
AutoTopmost |
bool | false |
Smart multi-monitor always-on-top |
DateFormat |
string | "dddd, MMMM d, yyyy" |
.NET date format string |
ClockFaceStyle |
string | "Classic" |
Preset style name |
ClockFaceColor |
hex | "#D3D3D3" |
Ring and digit color |
HourHandColor |
hex | "#FFFFFF" |
Hour hand color |
MinuteHandColor |
hex | "#D3D3D3" |
Minute hand color |
SecondHandColor |
hex | "#FF0000" |
Second hand color |
DateTextColor |
hex | "#D3D3D3" |
Date label color |
TimeTextColor |
hex | "#FFFFFF" |
Time label color |
BackgroundColor |
hex | "#80000000" |
Widget background (supports alpha) |
ShowStopwatch |
bool | false |
Show stopwatch panel |
ShowTimer |
bool | false |
Show timer panel |
AlarmTime |
string? | null |
Persisted alarm as "hh:mm" |
| Language | C# (nullable enabled) |
| Framework | .NET 10.0 (net10.0-windows) |
| UI | WPF (Windows Presentation Foundation) |
| Color Picker | Windows Forms ColorDialog |
| Serialization | System.Text.Json |
| Build | MSBuild / dotnet CLI / Visual Studio 2022 |
| Platform | Windows x64 only |
DesktopClockWidget/
├── DesktopClockWidget.sln # Visual Studio solution
├── DesktopClockWidget.csproj # MSBuild project (net10.0-windows, WPF + WinForms)
├── App.xaml / App.xaml.cs # WPF application entry point
├── AssemblyInfo.cs # WPF theme metadata
├── ClockSettings.cs # Settings model + JSON load/save logic
├── MainWindow.xaml # Full widget UI layout (XAML)
├── MainWindow.xaml.cs # All runtime logic (clock ticks, hands, colors, alarms…)
├── AlarmDialog.xaml / .cs # Alarm-time picker dialog
└── TimerDialog.xaml / .cs # Countdown duration picker dialog
This project is provided as-is for personal use.