The day of the week, painted into your wallpaper. Uses color theory and pixel variance logic to find best color and position on the Wallpaper AUTOMATICALLY!
A single-file Windows desktop widget. Lighter than RAINMETER SKIN. No installer, no dependencies, no window.
DayWidget writes today's day name onto your desktop. Not in a window — inside the desktop itself, as a child of the Windows wallpaper host. That one design decision gives it every property you actually want from a desktop widget:
- It is behind every window, always. It can never cover your work and never steals focus.
- It survives
Win+Dand "Show desktop", because as far as Windows is concerned it is part of the desktop. - It has no window chrome, no taskbar button, no Alt-Tab entry.
- Clicks pass straight through it — except on the text itself, which is interactive.
And it is self-styling. Point it at a folder of fonts, change your wallpaper, and it re-reads the wallpaper and re-decides how it should look.
| Wallpaper-aware typography | On every wallpaper change it re-picks the font, the size, the colour and the position — deterministically seeded from the wallpaper itself, so the same wallpaper always gets the same treatment. |
| Smart placement | Builds summed-area tables over a downscaled copy of your wallpaper and scores every candidate position on local busyness, contrast, colour variance and distance from the visual centre of mass. It puts the text in quiet space. |
| Automatic contrast | Samples the mean colour under the chosen region and tunes the text colour to hit a ~4.5:1 contrast ratio against it. Falls back to your Windows accent colour. |
| Click to reshuffle fonts | Click the text and it cross-fades into the next font. The swap happens while invisible, so you never see the reflow. |
| Any font, no install | Drop in .ttf, .otf, and base64-encoded .b64 fonts in the same folder with the .exe and it will add them to the shuffle. |
| Multi-monitor | Per-monitor wallpaper geometry, including Fill / Fit / Stretch / Tile / Span. |
| Light footprint | Single 32-bit-safe .cs file, ~90 KB compiled, no runtime beyond what Windows ships. Analysis buffers are freed and the working set trimmed after every adaptation. |
- Grab
DayWidget.exefrom the latest release — it is also committed at the repo root if you cloned instead. - Put it in its own folder — it writes
daywidget.ininext to itself. - Drop one or more font files (
.ttf/.otf/.b64) beside it, or in aFontssubfolder. - Run it.
To start it with Windows, press Win+R, type shell:startup, and put a shortcut there.
| Action | Result |
|---|---|
| Left-click the text | Fade to the next font |
| Right-click the tray icon | Menu: font mode, reload, restart, open config, exit |
| Change your wallpaper | Everything re-adapts automatically, ~1 s later |
Edit daywidget.ini |
Applied within 250 ms — no restart needed |
daywidget.ini is created on first run and re-read live. Every key is optional.
; ---- typography ----
fontMode=random ; random | <exact font family name>
scale=1.0 ; multiplier on the auto-chosen size (0.2 - 8.0)
tracking=0.18 ; letter spacing, in em (-0.2 - 2.0)
uppercase=1
text=auto ; auto = today's day name, or any literal string
; ---- colour ----
colorMode=1 ; 1 = sample the wallpaper, 0 = Windows accent
accentLift=0.45 ; how far to lift a dark accent toward legibility
opacity=1.0 ; 0.05 - 1.0, applied at the window level
; ---- shadow ----
shadowAlpha=150 ; 0 disables the shadow entirely
shadowOffsetY=6
shadowBlur=10 ; 0 - 60
; ---- placement ----
autoPlace=1 ; re-place on every wallpaper change
align=0 ; 0 left | 1 centre | 2 right (manual fallback)
marginX=28
bottomMargin=2
monitor=0 ; 0 = primary, 1..n = specific display
useFullBounds=0 ; 1 = ignore the taskbar and use the whole screen
; ---- misc ----
tray=1
debug=0 ; writes daywidget-debug.log next to the exeDelete placedWall= to force a fresh placement decision on the current wallpaper.
No SDK, no NuGet, no project file. Windows already ships the compiler:
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:winexe /out:DayWidget.exe src\DayWidget.csOr just run build.cmd.
The source targets C# 5 deliberately, so it compiles with the in-box compiler on any Windows 10/11 machine with zero tooling installed.
The short version: a colour-keyed child window inside Explorer's wallpaper host, with the antialiased text composited against a sample of your wallpaper in software, per pixel.
The long version — including why the obvious approaches all fail, and the three bugs that
drove the current design — is in docs/ARCHITECTURE.md. Worth a read
if you are doing anything with layered windows or WorkerW.
| Symptom | Cause / fix |
|---|---|
| Nothing appears | No fonts in the folder. Add a .ttf / .otf, or set fontMode= to an installed family. |
| Text is hard to read | colorMode=1 needs a wallpaper it can sample. Try colorMode=0, or nudge accentLift. |
| Placement looks wrong | Delete the placedWall= line and it re-decides. Set autoPlace=0 and use align / marginX / bottomMargin to place it by hand. |
| Hidden behind a third-party wallpaper app | Wallpaper Engine, Lively and friends replace the wallpaper host. DayWidget cannot render inside those. |
| Edges look hard, no shadow | It could not read your wallpaper, so it fell back to crisp edges rather than showing a coloured fringe. Check debug=1 for compose: ... (no wallpaper -> crisp fallback). |
| Want a log | Set debug=1, reproduce, and attach daywidget-debug.log to an issue. |
Issues and PRs welcome — see CONTRIBUTING.md. If you are reporting a visual
bug, a screenshot plus daywidget-debug.log makes it ten times easier to fix.
MIT — Copyright (c) 2026 Hotshot. Fonts and wallpapers shown in the screenshots belong to their respective authors and are not part of this project.



