Skip to content

Repository files navigation

DesktopClockWidget

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.


Features

Clock Display

  • 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

Clock Face Styles

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

Clock Face Markers

  • 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

Full Color Customization

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

Alarm

  • 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

Stopwatch

  • Toggle visibility from the context menu
  • Start/pause and reset controls built into the widget
  • Displays hh:mm:ss.ff, updates every 50 ms

Countdown Timer

  • 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

Window Behavior

  • 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

Requirements

  • OS: Windows 10 or Windows 11 (x64)
  • Runtime: .NET 10.0 (or use the self-contained published build — no runtime install required)

Getting Started

Build from source

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=true

You can also open DesktopClockWidget.sln in Visual Studio 2022 and press F5.


Usage

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

Settings

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"

Tech Stack

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

Project Structure

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

License

This project is provided as-is for personal use.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages